diff --git a/src/policy/mvnw b/src/policy/mvnw
old mode 100755
new mode 100644
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java
index 2e8f9bba41f20c03e1db624f711b824a5fe37c9b..c5570af74136ea4b8afc465f10fcb7d269db41a0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java
index 078262021afaaa59f3d0974d62693184537de9a0..30e888d9fab1aae535dca345c7c56e28218bd2c2 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
index 7ba1c1535283f292b4dbe0d5b7bffe9bf1149156..89330354ef0fae7ce0b4834e9f57640b3e8dc027 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
index ab03189d3266dd4eb2286c4f8212fa7a06425d4d..141821958eca02925bdebebdd8a34f46a5844a8a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@ import eu.teraflow.policy.context.model.Device;
 import eu.teraflow.policy.context.model.EndPointId;
 import eu.teraflow.policy.context.model.Service;
 import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.model.PolicyRuleService;
 import io.smallrye.mutiny.Uni;
 import java.util.ArrayList;
 import java.util.List;
@@ -43,44 +42,73 @@ public class PolicyRuleConditionValidator {
         this.contextService = contextService;
     }
 
-    public Uni<Boolean> isDeviceIdValid(String deviceId) {
+    public Uni<Boolean> validateDeviceId(String deviceId) {
+        final var isDeviceIdValid = isDeviceIdValid(deviceId);
+
+        isDeviceIdValid
+                .subscribe()
+                .with(
+                        deviceIdIdBooleanValue -> {
+                            if (Boolean.FALSE.equals(deviceIdIdBooleanValue)) {
+                                LOGGER.errorf(INVALID_MESSAGE, deviceId);
+                            }
+                            LOGGER.infof(VALID_MESSAGE, deviceId);
+                        });
+
+        return isDeviceIdValid;
+    }
+
+    public Uni<Boolean> validateServiceId(ServiceId serviceId) {
+        final var isServiceIdValid = isServiceIdValid(serviceId);
+
+        isServiceIdValid
+                .subscribe()
+                .with(
+                        serviceIdBooleanValue -> {
+                            if (Boolean.FALSE.equals(serviceIdBooleanValue)) {
+                                LOGGER.errorf(INVALID_MESSAGE, serviceId);
+                            }
+                        });
+
+        return isServiceIdValid;
+    }
+
+    public Uni<Boolean> validateUpdatedPolicyRuleId(String updatedPolicyRuleId) {
+        final var isUpdatedPolicyRuleIdValid = isUpdatedPolicyRuleIdValid(updatedPolicyRuleId);
+
+        isUpdatedPolicyRuleIdValid
+                .subscribe()
+                .with(
+                        serviceIdBooleanValue -> {
+                            if (Boolean.FALSE.equals(serviceIdBooleanValue)) {
+                                LOGGER.errorf(INVALID_MESSAGE, updatedPolicyRuleId);
+                            }
+                        });
+
+        return isUpdatedPolicyRuleIdValid;
+    }
+
+    private Uni<Boolean> isDeviceIdValid(String deviceId) {
         return contextService
                 .getDevice(deviceId)
-                .onFailure()
-                .recoverWithItem((Device) null)
                 .onItem()
                 .transform(device -> checkIfDeviceIdExists(device, deviceId));
     }
 
     private boolean checkIfDeviceIdExists(Device device, String deviceId) {
-        if (device == null) {
-            return false;
-        }
-
         final var deviceDeviceId = device.getDeviceId();
+
         return deviceDeviceId.equals(deviceId);
     }
 
-    public Uni<Boolean> isServiceIdValid(ServiceId serviceId, List<String> deviceIds) {
+    private Uni<Boolean> isServiceIdValid(ServiceId serviceId) {
         return contextService
                 .getService(serviceId)
-                .onFailure()
-                .recoverWithItem((Service) null)
                 .onItem()
-                .transform(service -> checkIfServiceIsValid(service, serviceId, deviceIds));
-    }
-
-    private boolean checkIfServiceIsValid(
-            Service service, ServiceId serviceId, List<String> deviceIds) {
-        return (checkIfServiceIdExists(service, serviceId)
-                && checkIfServicesDeviceIdsExist(service, deviceIds));
+                .transform(service -> checkIfServiceIdExists(service, serviceId));
     }
 
     private boolean checkIfServiceIdExists(Service service, ServiceId serviceId) {
-        if (service == null) {
-            return false;
-        }
-
         final var serviceServiceIdServiceId = service.getServiceId();
         final var serviceServiceIdContextId = serviceServiceIdServiceId.getContextId();
         final var serviceServiceIdId = serviceServiceIdServiceId.getId();
@@ -89,11 +117,14 @@ public class PolicyRuleConditionValidator {
                 && serviceServiceIdId.equals(serviceId.getId());
     }
 
-    private boolean checkIfServicesDeviceIdsExist(Service service, List<String> deviceIds) {
-        if (deviceIds.isEmpty()) {
-            return true;
-        }
+    public Uni<Boolean> isServicesDeviceIdsValid(ServiceId serviceId, List<String> deviceIds) {
+        return contextService
+                .getService(serviceId)
+                .onItem()
+                .transform(service -> checkIfServicesDeviceIdsExist(service, deviceIds));
+    }
 
+    private boolean checkIfServicesDeviceIdsExist(Service service, List<String> deviceIds) {
         List<String> serviceDeviceIds = new ArrayList<>();
         for (EndPointId serviceEndPointId : service.getServiceEndPointIds()) {
             serviceDeviceIds.add(serviceEndPointId.getDeviceId());
@@ -102,7 +133,7 @@ public class PolicyRuleConditionValidator {
         return deviceIds.containsAll(serviceDeviceIds);
     }
 
-    public Uni<Boolean> isUpdatedPolicyRuleIdValid(String updatedPolicyRuleId) {
+    private Uni<Boolean> isUpdatedPolicyRuleIdValid(String updatedPolicyRuleId) {
         return contextService
                 .getPolicyRule(updatedPolicyRuleId)
                 .onItem()
@@ -115,25 +146,4 @@ public class PolicyRuleConditionValidator {
                 .ifNull()
                 .continueWith(false);
     }
-
-    public Uni<Boolean> isPolicyRuleServiceValid(String updatedPolicyRuleId, ServiceId serviceId) {
-        return contextService
-                .getPolicyRule(updatedPolicyRuleId)
-                .onItem()
-                .ifNotNull()
-                .transform(
-                        policyRule -> {
-                            var policyRuleService =
-                                    (PolicyRuleService) policyRule.getPolicyRuleType().getPolicyRuleType();
-                            if (policyRuleService.getServiceId().getId().equals(serviceId.getId())) {
-                                return true;
-                            }
-                            return false;
-                        })
-                .onItem()
-                .ifNull()
-                .continueWith(false)
-                .onFailure()
-                .recoverWithItem(false);
-    }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyService.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyService.java
index 987b85d8cbbae7f6c9decde97c06d475232431b7..556e350322de1df29c38cbc852106b4845e25095 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
index 0c6fac456ffa60c522e50e7c07c342f5b82c89ea..fba43c18a573115d279a251f4806834fdefa2129 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -44,10 +44,11 @@ import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
 import eu.teraflow.policy.monitoring.model.AlarmResponse;
 import eu.teraflow.policy.monitoring.model.AlarmSubscription;
 import eu.teraflow.policy.monitoring.model.KpiValueRange;
+import eu.teraflow.policy.monitoring.model.MonitorKpiRequest;
 import eu.teraflow.policy.service.ServiceService;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
-import io.smallrye.mutiny.groups.UniJoin;
+import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -55,6 +56,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Random;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import org.jboss.logging.Logger;
@@ -69,9 +71,6 @@ public class PolicyServiceImpl implements PolicyService {
     private static final int ACCEPTABLE_NUMBER_OF_ALARMS = 3;
     private static final int MONITORING_WINDOW_IN_SECONDS = 5;
     private static final int SAMPLING_RATE_PER_SECOND = 1;
-    // TODO: Find a better way to disregard alarms while reconfiguring path
-    // Temporary solution for not calling the same rpc more than it's needed
-    private static int noAlarms = 0;
 
     private static final PolicyRuleState INSERTED_POLICYRULE_STATE =
             new PolicyRuleState(
@@ -161,221 +160,94 @@ public class PolicyServiceImpl implements PolicyService {
         final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
         if (!policyRuleBasic.areArgumentsValid()) {
             LOGGER.error(policyRuleService.getExeceptionMessage());
-            final var policyRuleState =
+            setPolicyRuleServiceToContext(
+                    policyRuleService,
                     new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
-            return Uni.createFrom().item(policyRuleState);
+                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage()));
+            return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
         }
 
-        final var serviceId = policyRuleService.getServiceId();
-        final var deviceIds = policyRuleService.getDeviceIds();
-        final var isServiceValid = policyRuleConditionValidator.isServiceIdValid(serviceId, deviceIds);
-
-        return isServiceValid
-                .onItem()
-                .transform(
-                        isService -> {
-                            if (!isService) {
-                                var policyRuleState =
-                                        new PolicyRuleState(
-                                                PolicyRuleStateEnum.POLICY_FAILED,
-                                                String.format(INVALID_MESSAGE, serviceId));
-
-                                return policyRuleState;
-                            }
-
-                            final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
-                            final var policyRule = new PolicyRule(policyRuleTypeService);
-                            final var alarmDescriptorList = createAlarmDescriptorList(policyRule);
-
-                            if (alarmDescriptorList.isEmpty()) {
-                                var policyRuleState =
-                                        new PolicyRuleState(
-                                                PolicyRuleStateEnum.POLICY_FAILED,
-                                                String.format(
-                                                        "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
-                                                        policyRuleBasic.getPolicyRuleId()));
-                                return policyRuleState;
-                            }
-                            contextService.setPolicyRule(policyRule).subscribe().with(x -> {});
-                            setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE);
-                            noAlarms = 0;
-
-                            // Create an alarmIds list that contains the promised ids returned from setKpiAlarm
-                            List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
-                            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-                                LOGGER.infof("alarmDescriptor:");
-                                LOGGER.infof(alarmDescriptor.toString());
-                                alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
-                            }
-
-                            // Transform the alarmIds into promised alarms returned from the
-                            // getAlarmResponseStream
-                            List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
-                            for (Uni<String> alarmId : alarmIds) {
-                                alarmResponseStreamList.add(
-                                        alarmId
-                                                .onItem()
-                                                .transformToMulti(
-                                                        id -> {
-                                                            alarmPolicyRuleServiceMap.put(id, policyRuleService);
-
-                                                            // TODO: Create infinite subscription
-                                                            var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
-                                                            return monitoringService.getAlarmResponseStream(alarmSubscription);
-                                                        }));
-                            }
-
-                            // Merge the promised alarms into one stream (Multi Object)
-                            final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
-                            setPolicyRuleServiceToContext(policyRuleService, PROVISIONED_POLICYRULE_STATE);
-
-                            monitorAlarmResponseForService(multi);
-
-                            // TODO: Resubscribe to the stream, if it has ended
-
-                            // TODO: Redesign evaluation of action
-                            // evaluateAction(policyRule, alarmDescriptorList, multi);
+        policyRuleBasic.setPolicyRuleState(INSERTED_POLICYRULE_STATE);
+        policyRuleService.setPolicyRuleBasic(policyRuleBasic);
+        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
 
-                            return VALIDATED_POLICYRULE_STATE;
-                        });
+        contextService
+                .setPolicyRule(policyRule)
+                .subscribe()
+                .with(id -> validateService(policyRuleService));
+        return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
 
     @Override
-    public Uni<PolicyRuleState> addPolicyDevice(PolicyRuleDevice policyRuleDevice) {
-        LOGGER.infof("Received %s", policyRuleDevice);
+    public Uni<PolicyRuleState> updatePolicyService(PolicyRuleService policyRuleService) {
+        LOGGER.infof("Received %s", policyRuleService);
 
-        if (!policyRuleDevice.areArgumentsValid()) {
-            LOGGER.error(policyRuleDevice.getExeceptionMessage());
+        if (!policyRuleService.areArgumentsValid()) {
+            LOGGER.error(policyRuleService.getExeceptionMessage());
             final var policyRuleState =
                     new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleDevice.getExeceptionMessage());
+                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleService.getExeceptionMessage());
 
             return Uni.createFrom().item(policyRuleState);
         }
 
-        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
         if (!policyRuleBasic.areArgumentsValid()) {
-            LOGGER.error(policyRuleDevice.getExeceptionMessage());
-            final var policyRuleState =
+            LOGGER.error(policyRuleService.getExeceptionMessage());
+            setPolicyRuleServiceToContext(
+                    policyRuleService,
                     new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
-            return Uni.createFrom().item(policyRuleState);
+                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage()));
+            return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
         }
 
-        final var deviceIds = policyRuleDevice.getDeviceIds();
-        final var areDevicesValid = returnInvalidDeviceIds(deviceIds);
-
-        return areDevicesValid
-                .onItem()
-                .transform(
-                        areDevices -> {
-                            if (areDevices.contains(false)) {
-                                var policyRuleState =
-                                        new PolicyRuleState(
-                                                PolicyRuleStateEnum.POLICY_FAILED,
-                                                String.format(
-                                                        INVALID_MESSAGE,
-                                                        policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId()));
-
-                                return policyRuleState;
-                            }
-
-                            final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
-                            final var policyRule = new PolicyRule(policyRuleTypeDevice);
-
-                            final var alarmDescriptorList = createAlarmDescriptorList(policyRule);
-                            if (alarmDescriptorList.isEmpty()) {
-                                var policyRuleState =
-                                        new PolicyRuleState(
-                                                PolicyRuleStateEnum.POLICY_FAILED,
-                                                String.format(
-                                                        "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
-                                                        policyRuleBasic.getPolicyRuleId()));
-                                return policyRuleState;
-                            }
-
-                            contextService.setPolicyRule(policyRule).subscribe().with(x -> {});
-                            setPolicyRuleDeviceToContext(policyRuleDevice, VALIDATED_POLICYRULE_STATE);
-                            noAlarms = 0;
-
-                            List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
-                            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-                                LOGGER.infof("alarmDescriptor:");
-                                LOGGER.infof(alarmDescriptor.toString());
-                                alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
-                            }
-
-                            // Transform the alarmIds into promised alarms returned from the
-                            // getAlarmResponseStream
-                            List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
-                            for (Uni<String> alarmId : alarmIds) {
-                                alarmResponseStreamList.add(
-                                        alarmId
-                                                .onItem()
-                                                .transformToMulti(
-                                                        id -> {
-                                                            alarmPolicyRuleDeviceMap.put(id, policyRuleDevice);
-
-                                                            // TODO: Create infinite subscription
-                                                            var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
-                                                            return monitoringService.getAlarmResponseStream(alarmSubscription);
-                                                        }));
-                            }
-
-                            // Merge the promised alarms into one stream (Multi Object)
-                            final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
-                            setPolicyRuleDeviceToContext(policyRuleDevice, PROVISIONED_POLICYRULE_STATE);
-
-                            monitorAlarmResponseForDevice(multi);
-
-                            // TODO: Resubscribe to the stream, if it has ended
+        policyRuleBasic.setPolicyRuleState(UPDATED_POLICYRULE_STATE);
+        policyRuleService.setPolicyRuleBasic(policyRuleBasic);
+        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
 
-                            // TODO: Redesign evaluation of action
-                            // evaluateAction(policyRule, alarmDescriptorList, multi);
+        contextService
+                .setPolicyRule(policyRule)
+                .subscribe()
+                .with(id -> validateUpdatedPolicyService(policyRuleService));
 
-                            return VALIDATED_POLICYRULE_STATE;
-                        });
+        return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
 
     @Override
-    public Uni<PolicyRuleState> updatePolicyService(PolicyRuleService policyRuleService) {
-        LOGGER.infof("Received %s", policyRuleService);
+    public Uni<PolicyRuleState> addPolicyDevice(PolicyRuleDevice policyRuleDevice) {
+        LOGGER.infof("Received %s", policyRuleDevice);
 
-        if (!policyRuleService.areArgumentsValid()) {
-            LOGGER.error(policyRuleService.getExeceptionMessage());
+        if (!policyRuleDevice.areArgumentsValid()) {
+            LOGGER.error(policyRuleDevice.getExeceptionMessage());
             final var policyRuleState =
                     new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleService.getExeceptionMessage());
+                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleDevice.getExeceptionMessage());
 
             return Uni.createFrom().item(policyRuleState);
         }
 
-        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
         if (!policyRuleBasic.areArgumentsValid()) {
-            LOGGER.error(policyRuleService.getExeceptionMessage());
-            final var policyRuleState =
+            LOGGER.error(policyRuleDevice.getExeceptionMessage());
+            setPolicyRuleDeviceToContext(
+                    policyRuleDevice,
                     new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
-            return Uni.createFrom().item(policyRuleState);
+                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage()));
+            return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
         }
 
-        final var serviceId = policyRuleService.getServiceId();
-        final var policyRuleId = policyRuleBasic.getPolicyRuleId();
-        final var isPolicyRuleServiceValid =
-                policyRuleConditionValidator.isPolicyRuleServiceValid(policyRuleId, serviceId);
-
-        return isPolicyRuleServiceValid
-                .onItem()
-                .transform(
-                        isPolicyRuleService -> {
-                            if (!isPolicyRuleService) {
-                                return new PolicyRuleState(
-                                        PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId));
-                            }
+        policyRuleBasic.setPolicyRuleState(INSERTED_POLICYRULE_STATE);
+        policyRuleDevice.setPolicyRuleBasic(policyRuleBasic);
+        final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
+        final var policyRule = new PolicyRule(policyRuleTypeDevice);
 
-                            return VALIDATED_POLICYRULE_STATE;
-                        });
+        contextService
+                .setPolicyRule(policyRule)
+                .subscribe()
+                .with(id -> validateDevice(policyRuleDevice));
+        return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
 
     @Override
@@ -393,153 +265,152 @@ public class PolicyServiceImpl implements PolicyService {
 
         final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
         if (!policyRuleBasic.areArgumentsValid()) {
-            final var policyRuleState =
+            LOGGER.error(policyRuleDevice.getExeceptionMessage());
+            setPolicyRuleDeviceToContext(
+                    policyRuleDevice,
                     new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage());
-            return Uni.createFrom().item(policyRuleState);
+                            PolicyRuleStateEnum.POLICY_FAILED, policyRuleBasic.getExeceptionMessage()));
+            return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
         }
 
-        final var policyRuleId = policyRuleBasic.getPolicyRuleId();
-        final var isPolicyRuleValid =
-                policyRuleConditionValidator.isUpdatedPolicyRuleIdValid(policyRuleId);
+        policyRuleBasic.setPolicyRuleState(UPDATED_POLICYRULE_STATE);
+        policyRuleDevice.setPolicyRuleBasic(policyRuleBasic);
+        final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
+        final var policyRule = new PolicyRule(policyRuleTypeDevice);
 
-        return isPolicyRuleValid
-                .onItem()
-                .transform(
-                        isPolicyRuleService -> {
-                            if (!isPolicyRuleService) {
-                                return new PolicyRuleState(
-                                        PolicyRuleStateEnum.POLICY_FAILED,
-                                        String.format(INVALID_MESSAGE, policyRuleId));
-                            }
+        contextService
+                .setPolicyRule(policyRule)
+                .subscribe()
+                .with(id -> validateUpdatedPolicyDevice(policyRuleDevice));
 
-                            return VALIDATED_POLICYRULE_STATE;
-                        });
+        return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
 
     @Override
     public Uni<PolicyRuleState> deletePolicy(String policyRuleId) {
         LOGGER.infof("Received %s", policyRuleId);
 
-        final var getPolicyRule = contextService.getPolicyRule(policyRuleId);
-
-        return getPolicyRule
-                .onItem()
-                .transform(
-                        policyRule -> {
-                            var policyRuleBasic = policyRule.getPolicyRuleType().getPolicyRuleBasic();
-
-                            policyRule
-                                    .getPolicyRuleType()
-                                    .getPolicyRuleBasic()
-                                    .setPolicyRuleState(REMOVED_POLICYRULE_STATE);
-
-                            contextService
-                                    .setPolicyRule(policyRule)
-                                    .subscribe()
-                                    .with(
-                                            tmp ->
-                                                    LOGGER.infof(
-                                                            "DeletePolicy with id: " + VALID_MESSAGE,
-                                                            policyRuleBasic.getPolicyRuleId()));
-
-                            return policyRuleBasic.getPolicyRuleState();
-                        });
-    }
+        PolicyRule policyRule = contextService.getPolicyRule(policyRuleId).await().indefinitely();
 
-    private Uni<List<Boolean>> returnInvalidDeviceIds(List<String> deviceIds) {
-        UniJoin.Builder<Boolean> builder = Uni.join().builder();
-        for (String deviceId : deviceIds) {
-            final var validatedDeviceId = policyRuleConditionValidator.isDeviceIdValid(deviceId);
-            builder.add(validatedDeviceId);
+        final var policyRuleBasic = policyRule.getPolicyRuleType().getPolicyRuleBasic();
+        List<PolicyRuleCondition> policyRuleConditions = policyRuleBasic.getPolicyRuleConditions();
+
+        for (PolicyRuleCondition policy : policyRuleConditions) {
+            var empty = monitoringService.deleteKpi(policy.getKpiId());
+            empty
+                    .subscribe()
+                    .with(emptyMessage -> LOGGER.infof("Kpi [%s] has been deleted.\n", policyRuleId));
         }
-        return builder.joinAll().andFailFast();
+
+        var empty = contextService.removePolicyRule(policyRuleId);
+        empty
+                .subscribe()
+                .with(emptyMessage -> LOGGER.infof("Policy [%s] has been removed.\n", policyRuleId));
+
+        setPolicyRuleToContext(policyRule, REMOVED_POLICYRULE_STATE);
+        return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
 
-    private List<AlarmDescriptor> createAlarmDescriptorList(PolicyRule policyRule) {
-        final var policyRuleType = policyRule.getPolicyRuleType();
-        final var policyRuleTypeSpecificType = policyRuleType.getPolicyRuleType();
+    private void monitorKpi(List<AlarmDescriptor> alarmDescriptorList) {
+
+        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+            var monitorKpiRequest =
+                    new MonitorKpiRequest(
+                            alarmDescriptor.getKpiId(), MONITORING_WINDOW_IN_SECONDS, SAMPLING_RATE_PER_SECOND);
+            monitoringService
+                    .monitorKpi(monitorKpiRequest)
+                    .subscribe()
+                    .with(
+                            emptyMessage ->
+                                    LOGGER.infof(
+                                            "Kpi [%s] has started to be monitored.\n", alarmDescriptor.getKpiId()));
+        }
+    }
 
-        List<AlarmDescriptor> alarmDescriptorList = new ArrayList<>();
-        if (policyRuleTypeSpecificType instanceof PolicyRuleService) {
-            final var policyRuleService = (PolicyRuleService) policyRuleTypeSpecificType;
-            final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+    private void provisionAlarm(
+            PolicyRule policyRule, List<AlarmDescriptor> alarmDescriptorList, Boolean isService) {
 
-            alarmDescriptorList = parsePolicyRuleCondition(policyRuleBasic);
-            if (alarmDescriptorList.isEmpty()) {
-                return List.of();
-            }
-        } else {
-            final var policyRuleDevice = (PolicyRuleDevice) policyRuleTypeSpecificType;
-            final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+        List<AlarmSubscription> alarmSubscriptionList = new ArrayList<>();
 
-            alarmDescriptorList = parsePolicyRuleCondition(policyRuleBasic);
-            if (alarmDescriptorList.isEmpty()) {
-                return List.of();
-            }
-            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-                alarmPolicyRuleDeviceMap.put(alarmDescriptor.getAlarmId(), policyRuleDevice);
-            }
+        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+            monitoringService
+                    .setKpiAlarm(alarmDescriptor)
+                    .subscribe()
+                    .with(alarmId -> alarmSubscriptionList.add(new AlarmSubscription(alarmId, 0, 0)));
         }
 
-        return alarmDescriptorList;
-    }
+        setPolicyRuleToContext(policyRule, PROVISIONED_POLICYRULE_STATE);
 
-    private void monitorAlarmResponseForService(Multi<AlarmResponse> multi) {
-        multi
-                .subscribe()
-                .with(
-                        alarmResponse -> {
-                            LOGGER.infof("**************************Received Alarm!**************************");
-                            LOGGER.infof("alarmResponse:");
-                            LOGGER.info(alarmResponse);
-                            LOGGER.info(alarmResponse.getAlarmId());
-                            applyActionService(alarmResponse.getAlarmId());
-                        });
+        getAlarmResponseStream(policyRule, alarmDescriptorList, alarmSubscriptionList, isService);
     }
 
-    private void monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) {
+    private void getAlarmResponseStream(
+            PolicyRule policyRule,
+            List<AlarmDescriptor> alarmDescriptorList,
+            List<AlarmSubscription> alarmSubscriptionList,
+            Boolean isService) {
+
+        List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
+        for (AlarmSubscription alarmSubscription : alarmSubscriptionList) {
+            alarmResponseStreamList.add(monitoringService.getAlarmResponseStream(alarmSubscription));
+        }
+        Multi<AlarmResponse> multi = Multi.createBy().merging().streams(alarmResponseStreamList);
+
         multi
+                .select()
+                .first()
                 .subscribe()
                 .with(
                         alarmResponse -> {
-                            LOGGER.infof("**************************Received Alarm!**************************");
-                            LOGGER.infof("alarmResponse:");
                             LOGGER.info(alarmResponse);
-                            LOGGER.info(alarmResponse.getAlarmId());
-                            applyActionDevice(alarmResponse.getAlarmId());
+                            if (isService) {
+                                if (!alarmPolicyRuleServiceMap.containsKey(alarmResponse.getAlarmId())) {
+                                    return;
+                                }
+                                applyActionService(alarmResponse.getAlarmId());
+                            } else {
+                                if (!alarmPolicyRuleDeviceMap.containsKey(alarmResponse.getAlarmId())) {
+                                    return;
+                                }
+                                applyActionDevice(alarmResponse.getAlarmId());
+                            }
                         });
-    }
 
-    // TODO: To be refactored or deprecated
-    //    private void evaluateAction(
-    //            PolicyRule policyRule,
-    //            List<AlarmDescriptor> alarmDescriptorList,
-    //            Multi<AlarmResponse> multi) {
-    //
-    //        Long count =
-    //                multi
-    //                        .collect()
-    //                        .with(Collectors.counting())
-    //                        .await()
-    //                        .atMost(Duration.ofMinutes(POLICY_EVALUATION_TIMEOUT));
-    //
-    //        if (count > ACCEPTABLE_NUMBER_OF_ALARMS) {
-    //            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-    //                monitoringService
-    //                        .deleteAlarm(alarmDescriptor.getAlarmId())
-    //                        .subscribe()
-    //                        .with(
-    //                                emptyMessage ->
-    //                                        LOGGER.infof(
-    //                                                "Alarm [%s] has been deleted as ineffective.\n",
-    //                                                alarmDescriptor.getAlarmId()));
-    //            }
-    //            setPolicyRuleToContext(policyRule, INEFFECTIVE_POLICYRULE_STATE);
-    //        } else {
-    //            setPolicyRuleToContext(policyRule, EFFECTIVE_POLICYRULE_STATE);
-    //        }
-    //    }
+        Long count =
+                multi
+                        .collect()
+                        .with(Collectors.counting())
+                        .await()
+                        .atMost(Duration.ofMinutes(POLICY_EVALUATION_TIMEOUT));
+
+        if (count > ACCEPTABLE_NUMBER_OF_ALARMS) {
+            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+                monitoringService
+                        .deleteAlarm(alarmDescriptor.getAlarmId())
+                        .subscribe()
+                        .with(
+                                emptyMessage ->
+                                        LOGGER.infof("Alarm [%s] has been deleted.\n", alarmDescriptor.getAlarmId()));
+            }
+
+            setPolicyRuleToContext(policyRule, INEFFECTIVE_POLICYRULE_STATE);
+
+        } else {
+            setPolicyRuleToContext(policyRule, EFFECTIVE_POLICYRULE_STATE);
+
+            multi
+                    .subscribe()
+                    .with(
+                            alarmResponse -> {
+                                LOGGER.info(alarmResponse);
+                                if (isService) {
+                                    applyActionService(alarmResponse.getAlarmId());
+                                } else {
+                                    applyActionDevice(alarmResponse.getAlarmId());
+                                }
+                            });
+        }
+    }
 
     private void applyActionDevice(String alarmId) {
         PolicyRuleDevice policyRuleDevice = alarmPolicyRuleDeviceMap.get(alarmId);
@@ -655,52 +526,190 @@ public class PolicyServiceImpl implements PolicyService {
                         });
     }
 
-    private void callRecalculatePathRPC(
-            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
+    private void applyActionService(String alarmId) {
+        PolicyRuleService policyRuleService = alarmPolicyRuleServiceMap.get(alarmId);
+        PolicyRuleAction policyRuleAction = policyRuleActionMap.get(alarmId);
 
-        final var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
+        setPolicyRuleServiceToContext(policyRuleService, ACTIVE_POLICYRULE_STATE);
 
-        deserializedServiceUni
+        switch (policyRuleAction.getPolicyRuleActionEnum()) {
+            case POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT:
+                addServiceConstraint(policyRuleService, policyRuleAction);
+            case POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE:
+                addServiceConfigRule(policyRuleService, policyRuleAction);
+            default:
+                LOGGER.errorf(INVALID_MESSAGE, policyRuleAction.getPolicyRuleActionEnum());
+                return;
+        }
+    }
+
+    private void validateDevice(PolicyRuleDevice policyRuleDevice) {
+        final var deviceIds = policyRuleDevice.getDeviceIds();
+        final var policyRuleId = policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId();
+
+        final var invalidDeviceIds = returnInvalidDeviceIds(deviceIds);
+        if (!invalidDeviceIds.isEmpty()) {
+            String ids = "";
+            for (String id : invalidDeviceIds) {
+                ids += " ," + id;
+            }
+
+            String message =
+                    String.format(
+                            "The following devices in PolicyRuleDevice with ID: %s are not valid: %s",
+                            policyRuleId, ids);
+            setPolicyRuleDeviceToContext(
+                    policyRuleDevice, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+            return;
+        }
+
+        createAlarmDescriptorsForDevices(policyRuleDevice);
+    }
+
+    private void createAlarmDescriptorsForDevices(PolicyRuleDevice policyRuleDevice) {
+        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+
+        List<AlarmDescriptor> alarmDescriptorList =
+                parsePolicyRuleCondition(policyRuleDevice.getPolicyRuleBasic());
+
+        if (alarmDescriptorList.isEmpty()) {
+            String message =
+                    String.format(
+                            "The devices of PolicyRuleDevice with ID: %s are not valid",
+                            policyRuleBasic.getPolicyRuleId());
+            setPolicyRuleDeviceToContext(
+                    policyRuleDevice, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+            return;
+        }
+
+        setPolicyRuleDeviceToContext(policyRuleDevice, VALIDATED_POLICYRULE_STATE);
+        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+            alarmPolicyRuleDeviceMap.put(alarmDescriptor.getAlarmId(), policyRuleDevice);
+        }
+
+        final var policyRuleTypeService = new PolicyRuleTypeDevice(policyRuleDevice);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
+        monitorKpi(alarmDescriptorList);
+        provisionAlarm(policyRule, alarmDescriptorList, false);
+        return;
+    }
+
+    private void validateUpdatedPolicyService(PolicyRuleService policyRuleService) {
+
+        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+        final var isUpdatedPolicyRuleValid =
+                policyRuleConditionValidator.validateUpdatedPolicyRuleId(policyRuleBasic.getPolicyRuleId());
+
+        isUpdatedPolicyRuleValid
                 .subscribe()
                 .with(
-                        deserializedService -> {
-                            serviceService
-                                    .recomputeConnections(deserializedService)
-                                    .subscribe()
-                                    .with(
-                                            x -> {
-                                                LOGGER.info("called recomputeConnections with:");
-                                                LOGGER.info(deserializedService);
-                                                setPolicyRuleServiceToContext(policyRuleService, ENFORCED_POLICYRULE_STATE);
-                                            });
+                        policyRuleBoolean -> {
+                            if (Boolean.FALSE.equals(policyRuleBoolean)) {
+
+                                String message =
+                                        String.format(
+                                                "The PolicyRule with ID: %s was not found. PolicyUpdateService failed.",
+                                                policyRuleBasic.getPolicyRuleId());
+                                setPolicyRuleServiceToContext(
+                                        policyRuleService,
+                                        new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+                                return;
+                            }
+
+                            validateService(policyRuleService);
                         });
     }
 
-    private void applyActionService(String alarmId) {
-        PolicyRuleService policyRuleService = alarmPolicyRuleServiceMap.get(alarmId);
-        PolicyRuleAction policyRuleAction =
-                policyRuleService.getPolicyRuleBasic().getPolicyRuleActions().get(0);
-
-        if (noAlarms == 0) {
-            noAlarms++;
-            setPolicyRuleServiceToContext(policyRuleService, ACTIVE_POLICYRULE_STATE);
-
-            switch (policyRuleAction.getPolicyRuleActionEnum()) {
-                case POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT:
-                    addServiceConstraint(policyRuleService, policyRuleAction);
-                case POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE:
-                    addServiceConfigRule(policyRuleService, policyRuleAction);
-                case POLICY_RULE_ACTION_RECALCULATE_PATH:
-                    callRecalculatePathRPC(policyRuleService, policyRuleAction);
-                default:
-                    LOGGER.errorf(INVALID_MESSAGE, policyRuleAction.getPolicyRuleActionEnum());
-                    return;
-            }
-        } else if (noAlarms == 2) {
-            noAlarms = 0;
-        } else {
-            noAlarms++;
+    private void validateUpdatedPolicyDevice(PolicyRuleDevice policyRuleDevice) {
+
+        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+        final var isUpdatedPolicyRuleValid =
+                policyRuleConditionValidator.validateUpdatedPolicyRuleId(policyRuleBasic.getPolicyRuleId());
+
+        isUpdatedPolicyRuleValid
+                .subscribe()
+                .with(
+                        policyRuleBoolean -> {
+                            if (Boolean.FALSE.equals(policyRuleBoolean)) {
+                                String message =
+                                        String.format(
+                                                "PolicyRule with ID: %s was not found. PolicyUpdateDevice failed",
+                                                policyRuleBasic.getPolicyRuleId());
+                                setPolicyRuleDeviceToContext(
+                                        policyRuleDevice,
+                                        new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+                                return;
+                            }
+                            validateDevice(policyRuleDevice);
+                        });
+    }
+
+    private void validateService(PolicyRuleService policyRuleService) {
+        final var serviceId = policyRuleService.getServiceId();
+        final var deviceIds = policyRuleService.getDeviceIds();
+        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+
+        Boolean isServiceIdValid =
+                policyRuleConditionValidator.validateServiceId(serviceId).await().indefinitely();
+
+        if (!isServiceIdValid) {
+            String message =
+                    String.format(
+                            "Cannot provision/update a PolicyRule with invalid service ID: %s",
+                            policyRuleBasic.getPolicyRuleId());
+            setPolicyRuleServiceToContext(
+                    policyRuleService, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+            return;
+        }
+
+        Boolean isServicesDeviceIdsValid =
+                policyRuleConditionValidator
+                        .isServicesDeviceIdsValid(serviceId, deviceIds)
+                        .await()
+                        .indefinitely();
+
+        if (!isServicesDeviceIdsValid) {
+
+            String message =
+                    String.format(
+                            "Cannot provision/update a PolicyRule with invalid service ID: %s",
+                            policyRuleBasic.getPolicyRuleId());
+            setPolicyRuleServiceToContext(
+                    policyRuleService, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+            return;
         }
+
+        setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE);
+
+        createAlarmDescriptorsForService(policyRuleService);
+    }
+
+    private void createAlarmDescriptorsForService(PolicyRuleService policyRuleService) {
+        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+
+        List<AlarmDescriptor> alarmDescriptorList =
+                parsePolicyRuleCondition(policyRuleService.getPolicyRuleBasic());
+
+        if (alarmDescriptorList.isEmpty()) {
+            String message =
+                    String.format(
+                            "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
+                            policyRuleBasic.getPolicyRuleId());
+            setPolicyRuleServiceToContext(
+                    policyRuleService, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+            return;
+        }
+
+        setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE);
+
+        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+            alarmPolicyRuleServiceMap.put(alarmDescriptor.getAlarmId(), policyRuleService);
+        }
+
+        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
+        provisionAlarm(policyRule, alarmDescriptorList, true);
+        return;
     }
 
     private List<AlarmDescriptor> parsePolicyRuleCondition(PolicyRuleBasic policyRuleBasic) {
@@ -824,16 +833,16 @@ public class PolicyServiceImpl implements PolicyService {
                         false);
 
             case POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN:
-                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), true, false, false);
+                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, false, false, false);
 
             case POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL:
-                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), true, true, false);
+                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, false, true, false);
 
             case POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN:
-                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, true, false, false);
+                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), false, false, false);
 
             case POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL:
-                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, true, false, true);
+                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), false, false, true);
             default:
                 return null;
         }
@@ -876,6 +885,31 @@ public class PolicyServiceImpl implements PolicyService {
         return new KpiValueRange(kpiMinValue, kpiMaxValue, true, includeMinValue, includeMaxValue);
     }
 
+    private List<String> returnInvalidDeviceIds(List<String> deviceIds) {
+        var invalidDeviceIds = new ArrayList<String>();
+
+        if (!deviceIds.isEmpty()) {
+
+            for (String deviceId : deviceIds) {
+                final var validatedDeviceId = policyRuleConditionValidator.validateDeviceId(deviceId);
+
+                validatedDeviceId
+                        .subscribe()
+                        .with(
+                                deviceIdBoolean -> {
+                                    if (Boolean.FALSE.equals(deviceIdBoolean)) {
+                                        invalidDeviceIds.add(deviceId);
+                                    }
+                                });
+            }
+
+        } else {
+            LOGGER.warnf("No deviceIds found");
+        }
+
+        return invalidDeviceIds;
+    }
+
     private void setPolicyRuleToContext(PolicyRule policyRule, PolicyRuleState policyRuleState) {
         final var policyRuleType = policyRule.getPolicyRuleType();
         final var policyRuleTypeSpecificType = policyRuleType.getPolicyRuleType();
diff --git a/src/policy/src/main/java/eu/teraflow/policy/Serializer.java b/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
index f46fc02efe98f93521f6d434f3dae5bd2662ea21..52d594ea4200c2ce4d775edf2f06cf7a9c9f9097 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -101,7 +101,6 @@ import monitoring.Monitoring;
 import monitoring.Monitoring.AlarmID;
 import monitoring.Monitoring.KpiId;
 import monitoring.Monitoring.SubscriptionID;
-import org.jboss.logging.Logger;
 import policy.Policy;
 import policy.Policy.PolicyRuleId;
 import policy.PolicyAction;
@@ -110,8 +109,6 @@ import policy.PolicyCondition;
 @Singleton
 public class Serializer {
 
-    private static final Logger LOGGER = Logger.getLogger(Serializer.class);
-
     public DeviceId serializeDeviceId(String expectedDeviceId) {
         final var builder = DeviceId.newBuilder();
         final var uuid = serializeUuid(expectedDeviceId);
@@ -1560,24 +1557,11 @@ public class Serializer {
         final var kpiValueMin = kpiValueRange.getKpiMinValue();
         final var kpiValueMax = kpiValueRange.getKpiMaxValue();
 
-        Monitoring.KpiValue serializedKpiValueMin;
-        Monitoring.KpiValue serializedKpiValueMax;
-
-        if (kpiValueMin == null && kpiValueMax == null) {
-            throw new IllegalStateException("KPI value max and min cannot be both null");
-        } else if (kpiValueMax == null) {
-            serializedKpiValueMin = serialize(kpiValueMin);
-            serializedKpiValueMax = serialize(new StringKpiValue("NaN"));
-        } else if (kpiValueMin == null) {
-            serializedKpiValueMin = serialize(new StringKpiValue("NaN"));
-            serializedKpiValueMax = serialize(kpiValueMax);
-        } else {
-            serializedKpiValueMin = serialize(kpiValueMin);
-            serializedKpiValueMax = serialize(kpiValueMax);
-        }
+        final var serializedKpiValueMin = serialize(kpiValueMin);
+        final var serializedKpiValueMax = serialize(kpiValueMax);
 
-        builder.setKpiMaxValue(serializedKpiValueMax);
         builder.setKpiMinValue(serializedKpiValueMin);
+        builder.setKpiMaxValue(serializedKpiValueMax);
 
         return builder.build();
     }
@@ -1614,24 +1598,24 @@ public class Serializer {
     public Monitoring.AlarmDescriptor serialize(AlarmDescriptor alarmDescriptor) {
         final var builder = Monitoring.AlarmDescriptor.newBuilder();
 
-        // final var alarmId = alarmDescriptor.getAlarmId();
+        final var alarmId = alarmDescriptor.getAlarmId();
         final var alarmDescription = alarmDescriptor.getAlarmDescription();
         final var name = alarmDescriptor.getName();
         final var kpiId = alarmDescriptor.getKpiId();
         final var kpiValueRange = alarmDescriptor.getKpiValueRange();
-        // final var timestamp = alarmDescriptor.getTimestamp();
+        final var timestamp = alarmDescriptor.getTimestamp();
 
-        // final var serializedAlarmId = serializeAlarmId(alarmId);
+        final var serializedAlarmId = serializeAlarmId(alarmId);
         final var serializedKpiId = serializeKpiId(kpiId);
         final var serializedKpiValueRange = serialize(kpiValueRange);
-        // final var serializedTimestamp = serialize(timestamp);
+        final var serializedTimestamp = serialize(timestamp);
 
-        // builder.setAlarmId(serializedAlarmId);
+        builder.setAlarmId(serializedAlarmId);
         builder.setAlarmDescription(alarmDescription);
         builder.setName(name);
         builder.setKpiId(serializedKpiId);
         builder.setKpiValueRange(serializedKpiValueRange);
-        // builder.setTimestamp(serializedTimestamp);
+        builder.setTimestamp(serializedTimestamp);
 
         return builder.build();
     }
@@ -1840,10 +1824,6 @@ public class Serializer {
                 return PolicyAction.PolicyRuleActionEnum.POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT;
             case POLICY_RULE_ACTION_NO_ACTION:
                 return PolicyAction.PolicyRuleActionEnum.POLICYRULE_ACTION_NO_ACTION;
-            case POLICY_RULE_ACTION_CALL_SERVICE_RPC:
-                return PolicyAction.PolicyRuleActionEnum.POLICY_RULE_ACTION_CALL_SERVICE_RPC;
-            case POLICY_RULE_ACTION_RECALCULATE_PATH:
-                return PolicyAction.PolicyRuleActionEnum.POLICY_RULE_ACTION_RECALCULATE_PATH;
             default:
                 return PolicyAction.PolicyRuleActionEnum.UNRECOGNIZED;
         }
@@ -1858,10 +1838,6 @@ public class Serializer {
                 return PolicyRuleActionEnum.POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE;
             case POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT:
                 return PolicyRuleActionEnum.POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT;
-            case POLICY_RULE_ACTION_CALL_SERVICE_RPC:
-                return PolicyRuleActionEnum.POLICY_RULE_ACTION_CALL_SERVICE_RPC;
-            case POLICY_RULE_ACTION_RECALCULATE_PATH:
-                return PolicyRuleActionEnum.POLICY_RULE_ACTION_RECALCULATE_PATH;
             case POLICYRULE_ACTION_NO_ACTION:
             case UNRECOGNIZED:
             default:
@@ -2277,6 +2253,8 @@ public class Serializer {
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352;
             case XR:
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_XR;
+            case IETF_L2VPN:
+                return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN;
             case UNDEFINED:
             default:
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_UNDEFINED;
@@ -2298,6 +2276,8 @@ public class Serializer {
                 return DeviceDriverEnum.ONF_TR_352;
             case DEVICEDRIVER_XR:
                 return DeviceDriverEnum.XR;
+            case DEVICEDRIVER_IETF_L2VPN:
+                return DeviceDriverEnum.IETF_L2VPN;
             case DEVICEDRIVER_UNDEFINED:
             case UNRECOGNIZED:
             default:
diff --git a/src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java b/src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java
index bee4157d08ada23e738282e5f7732c1db99a9dee..ec0859cb73fca89ec8c0b0d2651f5752baa8c590 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java b/src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java
index 0fe0c43b0cf98fd6a9432ed26ff57f03e1816095..7bbfd38c3f8abff20daaf5633de79237db54b9c6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java
index 66771968ceb5525558bebfd95c3e13af24b4d2dd..eb2fdc33be1b4d20020fe68b2fb29845a265c09a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java
index a85aff9e6c28b1a63e28d62de22e01e354b47ce3..08ff7b0add7bf1a4531790b81b5a5780e03f920a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java
index be2a896b48a77543232bdd41685d9d0ed8290711..b42fe12e6af90881035686c7166cd0d03f9b063a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java
index e0ff362e7154307f934ed0afbfcfa77adcd49acb..df814f35d7694403a54bb509340fed7efdd07bc0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java
index 89528a58dde8d39c6bc777fe9220dce85c855a65..b6ec8ff76de2f900f2080560369da08c23281f97 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java
index 4eec8e7a31fb8bad151f6ad9f7704a8246d78d1e..584ae60977ce5984c8cb78e15d3ce24d9a344581 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java b/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java
index 0dc11277140d5d092cbc3d4dd0b23f21ce855e65..70788feda321df6d01cea25315d4440ccc05c551 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/common/Util.java b/src/policy/src/main/java/eu/teraflow/policy/common/Util.java
index 2fe37e47e806de047d53241bddead5b686bc5329..889f44feef9df2eb66c5f3dfccb4198837fb037f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/common/Util.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/common/Util.java
@@ -1,3 +1,19 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 package eu.teraflow.policy.common;
 
 import java.util.List;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java
index cc33227ef3a8ddbe16bdea3145a1aacdc28b10ff..de2d327721636bbfdbbdd46ac3a6a5853bf44025 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java
index 835c5cd653b953b152157cc5bec6e948de8546b0..3b4754c8a61d2a8809af7ec0b60c5e55557cf05b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -28,13 +28,10 @@ import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
-import org.jboss.logging.Logger;
 
 @ApplicationScoped
 public class ContextGatewayImpl implements ContextGateway {
 
-    private static final Logger LOGGER = Logger.getLogger(ContextGatewayImpl.class);
-
     @GrpcClient("context")
     MutinyContextServiceStub streamingDelegateContext;
 
@@ -55,8 +52,6 @@ public class ContextGatewayImpl implements ContextGateway {
 
         final var serializedServiceId = serializer.serialize(serviceId);
 
-        LOGGER.infof("getService = %s", serializedServiceId);
-
         return streamingDelegateContext
                 .getService(serializedServiceId)
                 .onItem()
@@ -98,17 +93,10 @@ public class ContextGatewayImpl implements ContextGateway {
         // return Uni.createFrom().item("571eabc1-0f59-48da-b608-c45876c3fa8a");
         final var serializedPolicyRuleBasic = serializer.serialize(policyRule);
 
-        var ret =
-                streamingDelegateContextPolicy
-                        .setPolicyRule(serializedPolicyRuleBasic)
-                        .onItem()
-                        .transform(serializer::deserialize);
-        ret.subscribe()
-                .with(
-                        x -> {
-                            LOGGER.infof(x);
-                        });
-        return ret;
+        return streamingDelegateContextPolicy
+                .setPolicyRule(serializedPolicyRuleBasic)
+                .onItem()
+                .transform(serializer::deserialize);
     }
 
     @Override
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java
index 0da218b43ca4cfd5478fe496e15de9dbcc9745e6..20574e8af2a91563032f82393e4bccd65af2670e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java
index e54f14ca8d5d77c7422c9bc88941a63e12db55f8..7e52ade3c6d3abb772414d715b1768d121f6c2e7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java
index 6cc8e844182505ed104fae7766c1ea63474c7929..c2de24402e0f605dcba7d274bb056afa6c76d0ff 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java
index 38b2aa29bba6e43c736f0d9abd9b3243c5470d56..60ffba56282f1d77ef376696721c5c07b51e72f5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java
index ab05331c76f7daa178bd748cfb62dd1b7c3e915a..9a022a9c62fe75dece83448986771ba67f0fc6ce 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java
index 0046286179c4c20425bd028ede2465d2604d534f..c8e64f192011e0e3343197f06f02a68a7b24db5a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java
index 6b7daa12893fc75fdb797ec5e20e2300850ec146..2cd3528bf486a2f9b7f5065f78ebf708c14aa0b7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java
index 3a93cc7f33f1e60f9d36b6fae333556339298207..35c63468d97847686115af53e92595115bf2fdb7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java
index c98df91c4027f9ea0089261504ffeeda23d56aea..5d6ac12468cf286a9060fd22b8e0126f66ff2b51 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java
index a7097bc0bfe9ac72e1dd74ed272559ad8bc3e231..7403a94f40d143f79d52907d31a5373d877540cd 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java
index 3fe3443cca7315613784781040d4be7a988daa54..d5b196d3d60452214fcd672573d3e684eaa63646 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java
index 12e6ec41c3095529f9807b5449309d966814e3c1..0852f2fe2a7b819d2a527554075f1d0e271bf544 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java
index b374c022cf85c27f191e3d2607ed13b8078241ba..a450d2244a9e9b30608813df23e6dff3ad7b7e84 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java
index c8a69f3120eb183f5d0b34c73d9653afe1bd7ce3..9daf6e31a7ab8e149d7609db1fd19af591108792 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java
index 3d3f9a25b6dd7eae7dd27a846549b325b72b6cd2..db3bc1cdd8512bf1f4fb80dfc57bd3b2940fddde 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java
index d965e2f420479f6a0922a13f04c67db724b53924..7d873694213544e938f7767781772959dfd4bc7f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java
index 0f0c8fe20816394b450bdcd092206b3d7c257b89..ef28227bd904576f6f2609691bf02fe31db7c9f7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java
index e582859e6858a531e3a2c918deaed4d12d8618e4..0202399adad25ffe3609e47d7dd375e7524fc1f4 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java
index 94d0052a9ee4faef3c65856f59c5d1b7e8448b99..447a3edd3493fa71e57874f1b911abfd3a7b0220 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java
index 197bea58a6c9471a0ff1d50815cbb5ca75db9392..b35832b7d2a6c4d2e6487c0b16192b9ad02b0124 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java
index 20169427ac81d5d631cf92faf33b13f06947468c..3120d376cfdcd12c6885534219cfee55855275b6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java
index 10a60e8dce42a3031cac0a666ee1f4decc9814c8..1486c83be2522bc35dee7f88f0bdeada71cc36ed 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java
index c43cc5948c31317226cd3233b5c63ab7716222ed..dd3fd7037fffa171159f0323288717db917d7989 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java
index 572df6e45a11ccb4f9a6ef55bad26ec512e0e8f3..7cf05a416cdf5fe5acdc38a52e64ce2d38f1b7d5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java
index 2ff80daa53283e0ed3f80095d61c55626093fb64..20a285902a3364f2a7819e3970b915914ce32f19 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java
index 8b36eaed1a66b991150d30b34192bde61f384e7e..06c6d4c5c233af579a4aa5db832c2871b96bdd4e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java
index e6fa702dd66c9ee315856f08cb85910b4da78ce1..815589b5572cd87a8bba18f77c46bf56c6fb9838 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java
index ee1ebcbcf96962d06be6915f40acfd8230483655..ad763e35dfeef71c2f9f73dbf51785a3e03c0e0d 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -23,5 +23,6 @@ public enum DeviceDriverEnum {
     P4,
     IETF_NETWORK_TOPOLOGY,
     ONF_TR_352,
-    XR
+    XR,
+    IETF_L2VPN
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java
index 2efe9052ec96decc74bd1f5a254fd32bca88a9e8..4a7dc438c367ce1171ce01fbc33e56d4b73b7d67 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java
index d19dd9776e9688999007761e969e5c1b53d37176..a81bed099c181df3a519d50f9f6967f987912860 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java
index b40952b85a39226738e03261be0084acd0155b22..6e1056408e799f78e3c71648dd65ec279085e4c8 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java
index e9a3cbeb074eb166452b94c8b87db5edd17f346c..834081e5937006808a45cb05275c6fdd5f2f0e3d 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java
index 67da36b5c075134051a56929a39d07579381551a..05ba6451399598f958c2a055a4c938c6592627d1 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java
index 2a45a89a7b026ad17ff12c8a725ebab0ed0c0af5..cde7e1885f67b66334bc559c8b5763a542cdf3cf 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java
index f5d7b488490c08a2c049ef301b3ecb3290da4ccc..14bd2cb9993d2a9c65e760f657088f515674bd69 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java
index f7c3a12673ea1e12d2a82e3ddf3c6f8f916ee0db..4b6e129d1c1899da43d5cf48f0e43d87a56abb83 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java
index 692e1f01b71d6205d2b6eb9d78dad2b0d3e1bcf4..c6a00a6a763405ffa6053e2a09aad2ac5aace871 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java
index 49bf9e9af37eff86a1a6717d0bbd8924f01e2d31..f88d30db76c37c3ae5955fdc4a4d3cf8e002546d 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java
index 4bc44cc4e8c098e1347f43f38f6eafae325da1ee..f010024133fb12644a79eb1534f26e54874bd63b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java
@@ -1,3 +1,19 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 package eu.teraflow.policy.context.model;
 
 public class LocationTypeGpsPosition implements LocationType<GpsPosition> {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java
index f857aa507439465dc3c3d7b3e514b8ed1185b532..94b88ca7a8be63b3096f65e76c739a8bb87c29f6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java
index 0ff69793244fbc461170916669782ca83cab5f9b..e3456b32607ed49d465b40db826124a15c6f7a84 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java
index e2e9c8e242f56602030e809de6edce67ee524281..a99c949d1fd63c8ad31f8d0b14fe6f460ad43a17 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java
index 6229c1de7541dc63e3d9f18706cf33c4b4df57e9..81763a9dec19881982a7ef0b14d9a8226eee2233 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java
index e936f635c8f259d450b77588025e0b68e1ef7799..5fd6dfa26e70bf5e4ee710052e6bbb15aeb2136f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java
index 00a2fa12565c86094a749a144351480500ad1f31..0a9115acd7cec634d1a4cf6dd096bf44adab141e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -20,7 +20,5 @@ public enum ServiceStatusEnum {
     UNDEFINED,
     PLANNED,
     ACTIVE,
-    PENDING_REMOVAL,
-    SLA_VIOLATED,
-    UPDATING
+    PENDING_REMOVAL
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java
index f13a408f987f6e753e801e2ae804a8db8d951f4d..45215ca00fc9c5f6be076519dc0cfc41b167b0f4 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java
index 57dbe5ff9fac4e88560f8d1ccecf4b2113705afc..ee1dc7d2fddc8d523c5dcd41a060c5b13a304ab6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java b/src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java
index 95157ba8c6ec6ed3d91886282ef845f59e9f9d91..5997291d1ebef92021fca361bf300b3da2871c1e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java
index 02550446d691ca2d07bf9192943ba473e1a954b1..bd2487fe5f7f33f7d94279ecbfcd96cb8fc11a9b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java
index 21f679e01f6363160983696e1200c5c9bc199c26..3cb88fe08095bc8b65a72a560b11f9bc3e3ba995 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java
index 25fa7e73c7a854aeeb5dfaf3b0b3509770ae0582..4e7419a6a93c523a571f8f5e75d08b5cffba424c 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java
index 4c747af3dd653379d15b194001cce8def418d328..c7bae12145bd7e26871540a89b4056451d5d179c 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java b/src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java
index 1bedde35212383e42c7fabfe832d4bd4df34e99b..38257967703bee1d49ae8b1fc7ef11906690b1aa 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java b/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java
index 7231c02e5895ba08379abe39454259b79e1cc90a..1c8208ebd2fc545b3cbdda090ee6a02658c8e55c 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java b/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java
index 48029e550acf53f7b23816e3b2c409701ce03f30..3d59ac0a786ec4d5454711b739cc4337a8845450 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java
index 7f135fdf8ca011fbce90906c8bce8a57de765187..177bf85f69e00b793a4c4846f58677c0d619f536 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java
index 2a22538a44d5e8ca64f31913c6069fe88c187719..2c9bcae09826da7ec17f42f743515384f10cd886 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java
index 1c8651038d84782b932489785747b11348c8523b..871fd933a3143a94eea616eae00aedf63bbb8168 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java
@@ -1,3 +1,19 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 package eu.teraflow.policy.model;
 
 public class PolicyRuleActionConfig {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java
index 36cf0062f66bb3b75742a084f39d3ec0a834241d..432c3834c1c2f3417540bb4e62d43a1dfc58a167 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -20,8 +20,5 @@ public enum PolicyRuleActionEnum {
     POLICY_RULE_ACTION_NO_ACTION,
     POLICY_RULE_ACTION_SET_DEVICE_STATUS,
     POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE,
-    POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT,
-    POLICY_RULE_ACTION_CALL_SERVICE_RPC,
-    // This is temporary
-    POLICY_RULE_ACTION_RECALCULATE_PATH
+    POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
index ff0273ebdb8a8be25b2a9086c0cf25b2e26d29c7..9b6c3282886a2373d8a60493add54422e11b4b07 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java
index a19fc0da4bbdc5a3520e2d8d037367037cf996f0..9b7de240deb8a75316501dac1765a7c5518e97ab 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java
index fdc32549b3588f0f72ebd7421787f52d556bb6c2..516cc969024e509c95c9cc41576f5f962c882ef2 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java
index a480b611180fa9e8f82150cc3f96e12f65312d00..9d362919aadb772f97199df394f851953b446619 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java
index 29911fec8c9b46ba87a04bff67fc986620d621b1..1102e4778fec00d3f65b4cb43408b25d1254fb17 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java
index f447cf2100748029cd9b7a458b096a939c745176..749ca389e1f2ced8037078dea429938257ee8082 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java
index 93886aab4483e590c7f7701cd10199cee10e2beb..b3389f6a99bcbd4f7c8f5b77f863b15891bf8db2 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java
index c987a5c4c03b113c08b2908096be9025941799db..d262f254bbb4583256bfc18e8526a12bd1c048f1 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java
index 2b1db9ffbc7daae2b4ebff7c58e7ccea199e209b..54978476f457581670184feaec679b59f07d45e2 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
index 9fa2ba41dab696799f741c04d3cfe10907157d9a..89e9152c6b5402d56c22afcd01ddaac7c81c6dde 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
index 35b2a48b05e594616993ad8a09ed45b001f0e34c..cc6c97f32e746dcf898bcd6880b8ffd3708e3e34 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -31,13 +31,10 @@ import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import monitoring.MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub;
-import org.jboss.logging.Logger;
 
 @ApplicationScoped
 public class MonitoringGatewayImpl implements MonitoringGateway {
 
-    private static final Logger LOGGER = Logger.getLogger(MonitoringGatewayImpl.class);
-
     @GrpcClient("monitoring")
     MutinyMonitoringServiceStub streamingDelegateMonitoring;
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
index e9d71918fcf6e3fd0372355d3d271b46b66c5188..6010ec04a515dcfa9c84c7ce2363c9dea72640e1 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
index 0bafcaca84977c279f8e6c81e969532f1868bc3f..a3f9f223bc1ef012263366af409214a427162c59 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
index fe8c038b1437b3de59e22b12d5c4c1b7f9f5007a..090237f947743b200d0217a00a4b87c251587623 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
index 0e744280dfee097a99ef38eb1b602addbc27aa6a..a92ae4decfe54f9bce06db1dda53ccadea52946a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
index d5513860e4d4248bb824e4d888f88ad3ef3558af..532eed60868dfbd5fe1996c781964d3d49a368af 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -22,7 +22,6 @@ public class AlarmSubscription {
     private final float subscriptionTimeoutS;
     private final float subscriptionFrequencyMs;
 
-    // TODO: Refactor the AlarmSubscription constructor to allow infinite subscriptionTimeoutS
     public AlarmSubscription(
             String alarmId, float subscriptionTimeoutS, float subscriptionFrequencyMs) {
         this.alarmId = alarmId;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java
index 07152f0e3d5cc0194a878e2c43639cfcfc120f2f..c93aeb520b6fe6ec68a3d745b5161450130045c2 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java
index 93ffdf4fda7b29041991791bf231b10326574e95..2e19b2b2be6dd4ec7dd25f52ad19c99227fa5ef4 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java
index 2161084d0fc722843cc20f928c24d9becc7f2a23..cc3f92111d360271d3b85c152e6465d6e0a3bcc3 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
index 98b8c510d487ee2f873d84facac390cdcab4391f..92439d01f08b5f3ee55f15fe8c67ed484fa38306 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
index 107c1033549facafc843e182090c0d8cd95e51e5..0f7aeca64c97958c5417083ae49f1003667f6693 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java
index 5c3c4c3906dead563d19657c5a6da126e2aeb698..0a4418d65bff29d5e0df0134ad15a409b7fd2d30 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
index 74e92dba242874e85c56386291231ad0810ea6ef..6a0bba6c6a5af5fb53745768f01d1a0e5bf6c85d 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java
index 00752ca7d1df5bc0b7a70db550310a5141e7f2b7..c57e605ffdda7f45de06fec47813a522c06d7b93 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java
index 61e0e209c434b5038cbd4707f59d7dc3fbcbef5d..30aaad2e8e1514d788c4493bf15eb887f4d02d9b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java
index 52f26356fce02138f91e1bd4a889571a5d1a6e0c..649d06ceeff84d2daf7ef5c9589c361873c23987 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
index 101d784c3ba796bbaf2be9820263e595630f2578..96569bbc7fab5ef18b34ea78c5951949e804eafc 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java
index c0679fe1ef22a7a53e539c012469149063577f2d..b4a2b16a6dd73bfa2e91b9fd2d501f814af9531f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java
index 1a064d3a06e82ca35da92ea990b2a34f3f81fbee..a7483f4f62ac798932ea64a3351536ffb4e5155d 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
 
 package eu.teraflow.policy.service;
 
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.context.model.Service;
 import eu.teraflow.policy.context.model.ServiceId;
 import io.smallrye.mutiny.Uni;
@@ -24,6 +23,4 @@ import io.smallrye.mutiny.Uni;
 public interface ServiceGateway {
 
     Uni<ServiceId> updateService(Service service);
-
-    Uni<Empty> recomputeConnections(Service service);
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java
index 4347216bdf62c67257188354c35d1db5c5f224c1..d59330fd2b756749c333e70547989bb443bd19d8 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -17,19 +17,16 @@
 package eu.teraflow.policy.service;
 
 import eu.teraflow.policy.Serializer;
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.context.model.Service;
 import eu.teraflow.policy.context.model.ServiceId;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
-import org.jboss.logging.Logger;
 import service.MutinyServiceServiceGrpc.MutinyServiceServiceStub;
 
 @ApplicationScoped
 public class ServiceGatewayImpl implements ServiceGateway {
-    private static final Logger LOGGER = Logger.getLogger(ServiceGatewayImpl.class);
 
     @GrpcClient("service")
     MutinyServiceServiceStub streamingDelegateService;
@@ -50,27 +47,4 @@ public class ServiceGatewayImpl implements ServiceGateway {
                 .onItem()
                 .transform(serializer::deserialize);
     }
-
-    @Override
-    public Uni<Empty> recomputeConnections(Service service) {
-        // final var tmpServiceId = new ServiceId("43813baf-195e-5da6-af20-b3d0922e71a7",
-        // "d5261206-1047-51c0-8ef2-89b4c601afe7");
-        // final var dummyService = new Service(tmpServiceId, null, null, null, null, null, 0);
-
-        service.getServiceEndPointIds().clear();
-        service.getServiceConstraints().clear();
-        final var serializedService = serializer.serialize(service);
-        LOGGER.info(serializedService);
-
-        return streamingDelegateService
-                .recomputeConnections(serializedService)
-                .onItem()
-                .transform(serializer::deserializeEmpty)
-                .onFailure()
-                .invoke(
-                        x -> {
-                            LOGGER.info("recomputeConnections failed with:");
-                            LOGGER.info(x);
-                        });
-    }
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java
index c3d68066867c61c7c49b3d135a53f749f95c7069..bbf91aff0c7ffeeb3f262fa3cebd582acda74502 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
 
 package eu.teraflow.policy.service;
 
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.context.model.Service;
 import eu.teraflow.policy.context.model.ServiceId;
 import io.smallrye.mutiny.Uni;
@@ -24,6 +23,4 @@ import io.smallrye.mutiny.Uni;
 public interface ServiceService {
 
     Uni<ServiceId> updateService(Service service);
-
-    Uni<Empty> recomputeConnections(Service service);
 }
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java
index 9f0e14a3ea23a84a3bac0a62d77d7c627b90e2c8..74728924f70070e7651ac1af4ad75aba8b325c0e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java
@@ -1,5 +1,5 @@
 /*
-* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
 
 package eu.teraflow.policy.service;
 
-import eu.teraflow.policy.context.model.Empty;
 import eu.teraflow.policy.context.model.Service;
 import eu.teraflow.policy.context.model.ServiceId;
 import io.smallrye.mutiny.Uni;
@@ -37,9 +36,4 @@ public class ServiceServiceImpl implements ServiceService {
     public Uni<ServiceId> updateService(Service service) {
         return serviceGateway.updateService(service);
     }
-
-    @Override
-    public Uni<Empty> recomputeConnections(Service service) {
-        return serviceGateway.recomputeConnections(service);
-    }
 }
diff --git a/src/policy/src/main/resources/application.yml b/src/policy/src/main/resources/application.yml
index 241b2853607cec124a5876859cc96c9935281537..38a222d7934751e9eac28854300d55bd631a669c 100644
--- a/src/policy/src/main/resources/application.yml
+++ b/src/policy/src/main/resources/application.yml
@@ -13,11 +13,6 @@
 # limitations under the License.
 
 quarkus:
-  package:
-    type: mutable-jar
-  live-reload:
-    password: 1234
-    url: http://0.0.0.0:8080
   banner:
     path: teraflow-policy-banner.txt
   grpc:
@@ -28,15 +23,12 @@ quarkus:
       context:
         host: ${quarkus.kubernetes.env.vars.context-service-host}
         port: 1010
-      context_policy:
-        host: ${quarkus.kubernetes.env.vars.context-service-host}
-        port: 1010
       monitoring:
         host: ${quarkus.kubernetes.env.vars.monitoring-service-host}
         port: 7070
       service:
-        host: 192.168.6.38
-        port: 30030
+        host: ${quarkus.kubernetes.env.vars.service-service-host}
+        port: 3030
 
   http:
     port: 8080
diff --git a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java b/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
index 028555ebd29895313eb16b3c0694611afaeeac36..f06c30204b874cd6be30cd1a906c5087412e9640 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
+++ b/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
@@ -1914,7 +1914,8 @@ class SerializerTest {
                         ServiceStatusEnum.SLA_VIOLATED,
                         ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_SLA_VIOLATED),
                 Arguments.of(
-                        ServiceStatusEnum.UPDATING, ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UPDATING),
+                        ServiceStatusEnum.UPDATING,
+                        ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UPDATING),
                 Arguments.of(
                         ServiceStatusEnum.UNDEFINED,
                         ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED));
@@ -3605,9 +3606,9 @@ class SerializerTest {
                         DeviceDriverEnum.ONF_TR_352,
                         ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352),
                 Arguments.of(DeviceDriverEnum.XR, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_XR),
-                // Arguments.of(
-                //        DeviceDriverEnum.IETF_L2VPN,
-                //        ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN),
+                Arguments.of(
+                        DeviceDriverEnum.IETF_L2VPN,
+                        ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN),
                 Arguments.of(
                         DeviceDriverEnum.UNDEFINED, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_UNDEFINED));
     }
diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
index dc10cfe593fd977f05333ff82c182f2c2e5cc926..53252341b30dc093c79d5a54baf98b82e6a24b75 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -571,17 +571,13 @@ public final class ContextOuterClass {
      */
     SERVICESTATUS_ACTIVE(2),
     /**
-     * <code>SERVICESTATUS_UPDATING = 3;</code>
+     * <code>SERVICESTATUS_PENDING_REMOVAL = 3;</code>
      */
-    SERVICESTATUS_UPDATING(3),
+    SERVICESTATUS_PENDING_REMOVAL(3),
     /**
-     * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
+     * <code>SERVICESTATUS_SLA_VIOLATED = 4;</code>
      */
-    SERVICESTATUS_PENDING_REMOVAL(4),
-    /**
-     * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
-     */
-    SERVICESTATUS_SLA_VIOLATED(5),
+    SERVICESTATUS_SLA_VIOLATED(4),
     UNRECOGNIZED(-1),
     ;
 
@@ -598,17 +594,13 @@ public final class ContextOuterClass {
      */
     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>
+     * <code>SERVICESTATUS_PENDING_REMOVAL = 3;</code>
      */
-    public static final int SERVICESTATUS_PENDING_REMOVAL_VALUE = 4;
+    public static final int SERVICESTATUS_PENDING_REMOVAL_VALUE = 3;
     /**
-     * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
+     * <code>SERVICESTATUS_SLA_VIOLATED = 4;</code>
      */
-    public static final int SERVICESTATUS_SLA_VIOLATED_VALUE = 5;
+    public static final int SERVICESTATUS_SLA_VIOLATED_VALUE = 4;
 
 
     public final int getNumber() {
@@ -638,9 +630,8 @@ public final class ContextOuterClass {
         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;
+        case 3: return SERVICESTATUS_PENDING_REMOVAL;
+        case 4: return SERVICESTATUS_SLA_VIOLATED;
         default: return null;
       }
     }
@@ -3994,101 +3985,65 @@ public final class ContextOuterClass {
     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>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     java.util.List<context.ContextOuterClass.TopologyId> 
         getTopologyIdsList();
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     context.ContextOuterClass.TopologyId getTopologyIds(int index);
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     int getTopologyIdsCount();
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
         getTopologyIdsOrBuilderList();
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
         int index);
 
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     java.util.List<context.ContextOuterClass.ServiceId> 
         getServiceIdsList();
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     context.ContextOuterClass.ServiceId getServiceIds(int index);
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     int getServiceIdsCount();
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
         getServiceIdsOrBuilderList();
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</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>
+     * <code>.context.TeraFlowController controller = 4;</code>
      * @return Whether the controller field is set.
      */
     boolean hasController();
     /**
-     * <code>.context.TeraFlowController controller = 6;</code>
+     * <code>.context.TeraFlowController controller = 4;</code>
      * @return The controller.
      */
     context.ContextOuterClass.TeraFlowController getController();
     /**
-     * <code>.context.TeraFlowController controller = 6;</code>
+     * <code>.context.TeraFlowController controller = 4;</code>
      */
     context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder();
   }
@@ -4105,10 +4060,8 @@ public final class ContextOuterClass {
       super(builder);
     }
     private Context() {
-      name_ = "";
       topologyIds_ = java.util.Collections.emptyList();
       serviceIds_ = java.util.Collections.emptyList();
-      sliceIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
@@ -4156,12 +4109,6 @@ public final class ContextOuterClass {
               break;
             }
             case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                 topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
                 mutable_bitField0_ |= 0x00000001;
@@ -4170,7 +4117,7 @@ public final class ContextOuterClass {
                   input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
               break;
             }
-            case 34: {
+            case 26: {
               if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                 serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
                 mutable_bitField0_ |= 0x00000002;
@@ -4179,16 +4126,7 @@ public final class ContextOuterClass {
                   input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
               break;
             }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              sliceIds_.add(
-                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-              break;
-            }
-            case 50: {
+            case 34: {
               context.ContextOuterClass.TeraFlowController.Builder subBuilder = null;
               if (controller_ != null) {
                 subBuilder = controller_.toBuilder();
@@ -4222,9 +4160,6 @@ public final class ContextOuterClass {
         if (((mutable_bitField0_ & 0x00000002) != 0)) {
           serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
         }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -4268,55 +4203,17 @@ public final class ContextOuterClass {
       return getContextId();
     }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    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;
+    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 2;
     private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     @java.lang.Override
     public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
       return topologyIds_;
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     @java.lang.Override
     public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
@@ -4324,21 +4221,21 @@ public final class ContextOuterClass {
       return topologyIds_;
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     @java.lang.Override
     public int getTopologyIdsCount() {
       return topologyIds_.size();
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
       return topologyIds_.get(index);
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
+     * <code>repeated .context.TopologyId topology_ids = 2;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
@@ -4346,17 +4243,17 @@ public final class ContextOuterClass {
       return topologyIds_.get(index);
     }
 
-    public static final int SERVICE_IDS_FIELD_NUMBER = 4;
+    public static final int SERVICE_IDS_FIELD_NUMBER = 3;
     private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     @java.lang.Override
     public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
       return serviceIds_;
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     @java.lang.Override
     public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
@@ -4364,21 +4261,21 @@ public final class ContextOuterClass {
       return serviceIds_;
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     @java.lang.Override
     public int getServiceIdsCount() {
       return serviceIds_.size();
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.ServiceId getServiceIds(int index) {
       return serviceIds_.get(index);
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
+     * <code>repeated .context.ServiceId service_ids = 3;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
@@ -4386,50 +4283,10 @@ public final class ContextOuterClass {
       return serviceIds_.get(index);
     }
 
-    public static final int SLICE_IDS_FIELD_NUMBER = 5;
-    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;
+    public static final int CONTROLLER_FIELD_NUMBER = 4;
     private context.ContextOuterClass.TeraFlowController controller_;
     /**
-     * <code>.context.TeraFlowController controller = 6;</code>
+     * <code>.context.TeraFlowController controller = 4;</code>
      * @return Whether the controller field is set.
      */
     @java.lang.Override
@@ -4437,7 +4294,7 @@ public final class ContextOuterClass {
       return controller_ != null;
     }
     /**
-     * <code>.context.TeraFlowController controller = 6;</code>
+     * <code>.context.TeraFlowController controller = 4;</code>
      * @return The controller.
      */
     @java.lang.Override
@@ -4445,7 +4302,7 @@ public final class ContextOuterClass {
       return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
     }
     /**
-     * <code>.context.TeraFlowController controller = 6;</code>
+     * <code>.context.TeraFlowController controller = 4;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
@@ -4469,20 +4326,14 @@ public final class ContextOuterClass {
       if (contextId_ != null) {
         output.writeMessage(1, getContextId());
       }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
       for (int i = 0; i < topologyIds_.size(); i++) {
-        output.writeMessage(3, topologyIds_.get(i));
+        output.writeMessage(2, 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));
+        output.writeMessage(3, serviceIds_.get(i));
       }
       if (controller_ != null) {
-        output.writeMessage(6, getController());
+        output.writeMessage(4, getController());
       }
       unknownFields.writeTo(output);
     }
@@ -4497,24 +4348,17 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, getContextId());
       }
-      if (!getNameBytes().isEmpty()) {
-        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));
+          .computeMessageSize(2, 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));
+          .computeMessageSize(3, serviceIds_.get(i));
       }
       if (controller_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getController());
+          .computeMessageSize(4, getController());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -4536,14 +4380,10 @@ public final class ContextOuterClass {
         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()
@@ -4564,8 +4404,6 @@ public final class ContextOuterClass {
         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();
@@ -4574,10 +4412,6 @@ public final class ContextOuterClass {
         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();
@@ -4712,7 +4546,6 @@ public final class ContextOuterClass {
                 .alwaysUseFieldBuilders) {
           getTopologyIdsFieldBuilder();
           getServiceIdsFieldBuilder();
-          getSliceIdsFieldBuilder();
         }
       }
       @java.lang.Override
@@ -4724,8 +4557,6 @@ public final class ContextOuterClass {
           contextId_ = null;
           contextIdBuilder_ = null;
         }
-        name_ = "";
-
         if (topologyIdsBuilder_ == null) {
           topologyIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
@@ -4738,12 +4569,6 @@ public final class ContextOuterClass {
         } else {
           serviceIdsBuilder_.clear();
         }
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          sliceIdsBuilder_.clear();
-        }
         if (controllerBuilder_ == null) {
           controller_ = null;
         } else {
@@ -4782,7 +4607,6 @@ public final class ContextOuterClass {
         } else {
           result.contextId_ = contextIdBuilder_.build();
         }
-        result.name_ = name_;
         if (topologyIdsBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
@@ -4801,15 +4625,6 @@ public final class ContextOuterClass {
         } else {
           result.serviceIds_ = serviceIdsBuilder_.build();
         }
-        if (sliceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.sliceIds_ = sliceIds_;
-        } else {
-          result.sliceIds_ = sliceIdsBuilder_.build();
-        }
         if (controllerBuilder_ == null) {
           result.controller_ = controller_;
         } else {
@@ -4866,10 +4681,6 @@ public final class ContextOuterClass {
         if (other.hasContextId()) {
           mergeContextId(other.getContextId());
         }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
         if (topologyIdsBuilder_ == null) {
           if (!other.topologyIds_.isEmpty()) {
             if (topologyIds_.isEmpty()) {
@@ -4922,32 +4733,6 @@ public final class ContextOuterClass {
             }
           }
         }
-        if (sliceIdsBuilder_ == null) {
-          if (!other.sliceIds_.isEmpty()) {
-            if (sliceIds_.isEmpty()) {
-              sliceIds_ = other.sliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureSliceIdsIsMutable();
-              sliceIds_.addAll(other.sliceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceIds_.isEmpty()) {
-            if (sliceIdsBuilder_.isEmpty()) {
-              sliceIdsBuilder_.dispose();
-              sliceIdsBuilder_ = null;
-              sliceIds_ = other.sliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              sliceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceIdsFieldBuilder() : null;
-            } else {
-              sliceIdsBuilder_.addAllMessages(other.sliceIds_);
-            }
-          }
-        }
         if (other.hasController()) {
           mergeController(other.getController());
         }
@@ -5100,82 +4885,6 @@ public final class ContextOuterClass {
         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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        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;
-        onChanged();
-        return this;
-      }
-
       private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
         java.util.Collections.emptyList();
       private void ensureTopologyIdsIsMutable() {
@@ -5189,7 +4898,7 @@ public final class ContextOuterClass {
           context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
 
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
         if (topologyIdsBuilder_ == null) {
@@ -5199,7 +4908,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public int getTopologyIdsCount() {
         if (topologyIdsBuilder_ == null) {
@@ -5209,7 +4918,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
         if (topologyIdsBuilder_ == null) {
@@ -5219,7 +4928,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder setTopologyIds(
           int index, context.ContextOuterClass.TopologyId value) {
@@ -5236,7 +4945,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder setTopologyIds(
           int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
@@ -5250,7 +4959,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
         if (topologyIdsBuilder_ == null) {
@@ -5266,7 +4975,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder addTopologyIds(
           int index, context.ContextOuterClass.TopologyId value) {
@@ -5283,7 +4992,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder addTopologyIds(
           context.ContextOuterClass.TopologyId.Builder builderForValue) {
@@ -5297,7 +5006,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder addTopologyIds(
           int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
@@ -5311,7 +5020,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder addAllTopologyIds(
           java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
@@ -5326,7 +5035,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder clearTopologyIds() {
         if (topologyIdsBuilder_ == null) {
@@ -5339,7 +5048,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public Builder removeTopologyIds(int index) {
         if (topologyIdsBuilder_ == null) {
@@ -5352,14 +5061,14 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
           int index) {
         return getTopologyIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
           int index) {
@@ -5369,7 +5078,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
            getTopologyIdsOrBuilderList() {
@@ -5380,14 +5089,14 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
         return getTopologyIdsFieldBuilder().addBuilder(
             context.ContextOuterClass.TopologyId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
           int index) {
@@ -5395,7 +5104,7 @@ public final class ContextOuterClass {
             index, context.ContextOuterClass.TopologyId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 2;</code>
        */
       public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
            getTopologyIdsBuilderList() {
@@ -5429,7 +5138,7 @@ public final class ContextOuterClass {
           context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;
 
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
         if (serviceIdsBuilder_ == null) {
@@ -5439,7 +5148,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public int getServiceIdsCount() {
         if (serviceIdsBuilder_ == null) {
@@ -5449,7 +5158,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public context.ContextOuterClass.ServiceId getServiceIds(int index) {
         if (serviceIdsBuilder_ == null) {
@@ -5459,7 +5168,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder setServiceIds(
           int index, context.ContextOuterClass.ServiceId value) {
@@ -5476,7 +5185,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder setServiceIds(
           int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
@@ -5490,7 +5199,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
         if (serviceIdsBuilder_ == null) {
@@ -5506,7 +5215,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder addServiceIds(
           int index, context.ContextOuterClass.ServiceId value) {
@@ -5523,7 +5232,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder addServiceIds(
           context.ContextOuterClass.ServiceId.Builder builderForValue) {
@@ -5537,7 +5246,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder addServiceIds(
           int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
@@ -5551,7 +5260,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder addAllServiceIds(
           java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
@@ -5566,7 +5275,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder clearServiceIds() {
         if (serviceIdsBuilder_ == null) {
@@ -5579,7 +5288,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public Builder removeServiceIds(int index) {
         if (serviceIdsBuilder_ == null) {
@@ -5592,14 +5301,14 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(
           int index) {
         return getServiceIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
           int index) {
@@ -5609,7 +5318,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
            getServiceIdsOrBuilderList() {
@@ -5620,14 +5329,14 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
         return getServiceIdsFieldBuilder().addBuilder(
             context.ContextOuterClass.ServiceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
           int index) {
@@ -5635,7 +5344,7 @@ public final class ContextOuterClass {
             index, context.ContextOuterClass.ServiceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
+       * <code>repeated .context.ServiceId service_ids = 3;</code>
        */
       public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
            getServiceIdsBuilderList() {
@@ -5656,258 +5365,18 @@ public final class ContextOuterClass {
         return serviceIdsBuilder_;
       }
 
-      private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      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_ & ~0x00000004);
-          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_ & 0x00000004) != 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>
+       * <code>.context.TeraFlowController controller = 4;</code>
        * @return Whether the controller field is set.
        */
       public boolean hasController() {
         return controllerBuilder_ != null || controller_ != null;
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        * @return The controller.
        */
       public context.ContextOuterClass.TeraFlowController getController() {
@@ -5918,7 +5387,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       public Builder setController(context.ContextOuterClass.TeraFlowController value) {
         if (controllerBuilder_ == null) {
@@ -5934,7 +5403,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       public Builder setController(
           context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
@@ -5948,7 +5417,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
         if (controllerBuilder_ == null) {
@@ -5966,7 +5435,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       public Builder clearController() {
         if (controllerBuilder_ == null) {
@@ -5980,7 +5449,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
         
@@ -5988,7 +5457,7 @@ public final class ContextOuterClass {
         return getControllerFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
         if (controllerBuilder_ != null) {
@@ -5999,7 +5468,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>.context.TeraFlowController controller = 6;</code>
+       * <code>.context.TeraFlowController controller = 4;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> 
@@ -9329,61 +8798,49 @@ public final class ContextOuterClass {
     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>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     java.util.List<context.ContextOuterClass.DeviceId> 
         getDeviceIdsList();
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     context.ContextOuterClass.DeviceId getDeviceIds(int index);
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     int getDeviceIdsCount();
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
         getDeviceIdsOrBuilderList();
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
         int index);
 
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     java.util.List<context.ContextOuterClass.LinkId> 
         getLinkIdsList();
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     context.ContextOuterClass.LinkId getLinkIds(int index);
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     int getLinkIdsCount();
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
         getLinkIdsOrBuilderList();
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
         int index);
@@ -9401,7 +8858,6 @@ public final class ContextOuterClass {
       super(builder);
     }
     private Topology() {
-      name_ = "";
       deviceIds_ = java.util.Collections.emptyList();
       linkIds_ = java.util.Collections.emptyList();
     }
@@ -9451,12 +8907,6 @@ public final class ContextOuterClass {
               break;
             }
             case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                 deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
                 mutable_bitField0_ |= 0x00000001;
@@ -9465,7 +8915,7 @@ public final class ContextOuterClass {
                   input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
               break;
             }
-            case 34: {
+            case 26: {
               if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                 linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
                 mutable_bitField0_ |= 0x00000002;
@@ -9538,55 +8988,17 @@ public final class ContextOuterClass {
       return getTopologyId();
     }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    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;
+    public static final int DEVICE_IDS_FIELD_NUMBER = 2;
     private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <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 = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     @java.lang.Override
     public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
@@ -9594,21 +9006,21 @@ public final class ContextOuterClass {
       return deviceIds_;
     }
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     @java.lang.Override
     public int getDeviceIdsCount() {
       return deviceIds_.size();
     }
     /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
+     * <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 = 3;</code>
+     * <code>repeated .context.DeviceId device_ids = 2;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
@@ -9616,17 +9028,17 @@ public final class ContextOuterClass {
       return deviceIds_.get(index);
     }
 
-    public static final int LINK_IDS_FIELD_NUMBER = 4;
+    public static final int LINK_IDS_FIELD_NUMBER = 3;
     private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     @java.lang.Override
     public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
       return linkIds_;
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     @java.lang.Override
     public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
@@ -9634,21 +9046,21 @@ public final class ContextOuterClass {
       return linkIds_;
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     @java.lang.Override
     public int getLinkIdsCount() {
       return linkIds_.size();
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.LinkId getLinkIds(int index) {
       return linkIds_.get(index);
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.LinkId link_ids = 3;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
@@ -9673,14 +9085,11 @@ public final class ContextOuterClass {
       if (topologyId_ != null) {
         output.writeMessage(1, getTopologyId());
       }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
       for (int i = 0; i < deviceIds_.size(); i++) {
-        output.writeMessage(3, deviceIds_.get(i));
+        output.writeMessage(2, deviceIds_.get(i));
       }
       for (int i = 0; i < linkIds_.size(); i++) {
-        output.writeMessage(4, linkIds_.get(i));
+        output.writeMessage(3, linkIds_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -9695,16 +9104,13 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, getTopologyId());
       }
-      if (!getNameBytes().isEmpty()) {
-        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));
+          .computeMessageSize(2, deviceIds_.get(i));
       }
       for (int i = 0; i < linkIds_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, linkIds_.get(i));
+          .computeMessageSize(3, linkIds_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -9726,8 +9132,6 @@ public final class ContextOuterClass {
         if (!getTopologyId()
             .equals(other.getTopologyId())) return false;
       }
-      if (!getName()
-          .equals(other.getName())) return false;
       if (!getDeviceIdsList()
           .equals(other.getDeviceIdsList())) return false;
       if (!getLinkIdsList()
@@ -9747,8 +9151,6 @@ public final class ContextOuterClass {
         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();
@@ -9898,8 +9300,6 @@ public final class ContextOuterClass {
           topologyId_ = null;
           topologyIdBuilder_ = null;
         }
-        name_ = "";
-
         if (deviceIdsBuilder_ == null) {
           deviceIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
@@ -9944,7 +9344,6 @@ public final class ContextOuterClass {
         } else {
           result.topologyId_ = topologyIdBuilder_.build();
         }
-        result.name_ = name_;
         if (deviceIdsBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
@@ -10014,10 +9413,6 @@ public final class ContextOuterClass {
         if (other.hasTopologyId()) {
           mergeTopologyId(other.getTopologyId());
         }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
         if (deviceIdsBuilder_ == null) {
           if (!other.deviceIds_.isEmpty()) {
             if (deviceIds_.isEmpty()) {
@@ -10219,82 +9614,6 @@ public final class ContextOuterClass {
         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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        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;
-        onChanged();
-        return this;
-      }
-
       private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
         java.util.Collections.emptyList();
       private void ensureDeviceIdsIsMutable() {
@@ -10308,7 +9627,7 @@ public final class ContextOuterClass {
           context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
 
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
         if (deviceIdsBuilder_ == null) {
@@ -10318,7 +9637,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public int getDeviceIdsCount() {
         if (deviceIdsBuilder_ == null) {
@@ -10328,7 +9647,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
         if (deviceIdsBuilder_ == null) {
@@ -10338,7 +9657,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder setDeviceIds(
           int index, context.ContextOuterClass.DeviceId value) {
@@ -10355,7 +9674,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder setDeviceIds(
           int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
@@ -10369,7 +9688,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
         if (deviceIdsBuilder_ == null) {
@@ -10385,7 +9704,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder addDeviceIds(
           int index, context.ContextOuterClass.DeviceId value) {
@@ -10402,7 +9721,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder addDeviceIds(
           context.ContextOuterClass.DeviceId.Builder builderForValue) {
@@ -10416,7 +9735,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder addDeviceIds(
           int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
@@ -10430,7 +9749,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder addAllDeviceIds(
           java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
@@ -10445,7 +9764,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder clearDeviceIds() {
         if (deviceIdsBuilder_ == null) {
@@ -10458,7 +9777,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public Builder removeDeviceIds(int index) {
         if (deviceIdsBuilder_ == null) {
@@ -10471,14 +9790,14 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <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 = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
           int index) {
@@ -10488,7 +9807,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
            getDeviceIdsOrBuilderList() {
@@ -10499,14 +9818,14 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <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 = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
           int index) {
@@ -10514,7 +9833,7 @@ public final class ContextOuterClass {
             index, context.ContextOuterClass.DeviceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
+       * <code>repeated .context.DeviceId device_ids = 2;</code>
        */
       public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
            getDeviceIdsBuilderList() {
@@ -10548,7 +9867,7 @@ public final class ContextOuterClass {
           context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
 
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
         if (linkIdsBuilder_ == null) {
@@ -10558,7 +9877,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public int getLinkIdsCount() {
         if (linkIdsBuilder_ == null) {
@@ -10568,7 +9887,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public context.ContextOuterClass.LinkId getLinkIds(int index) {
         if (linkIdsBuilder_ == null) {
@@ -10578,7 +9897,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder setLinkIds(
           int index, context.ContextOuterClass.LinkId value) {
@@ -10595,7 +9914,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder setLinkIds(
           int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
@@ -10609,7 +9928,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
         if (linkIdsBuilder_ == null) {
@@ -10625,7 +9944,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder addLinkIds(
           int index, context.ContextOuterClass.LinkId value) {
@@ -10642,7 +9961,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder addLinkIds(
           context.ContextOuterClass.LinkId.Builder builderForValue) {
@@ -10656,7 +9975,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder addLinkIds(
           int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
@@ -10670,7 +9989,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder addAllLinkIds(
           java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
@@ -10685,7 +10004,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder clearLinkIds() {
         if (linkIdsBuilder_ == null) {
@@ -10698,7 +10017,7 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public Builder removeLinkIds(int index) {
         if (linkIdsBuilder_ == null) {
@@ -10711,14 +10030,14 @@ public final class ContextOuterClass {
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(
           int index) {
         return getLinkIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
           int index) {
@@ -10728,7 +10047,7 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
            getLinkIdsOrBuilderList() {
@@ -10739,14 +10058,14 @@ public final class ContextOuterClass {
         }
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
         return getLinkIdsFieldBuilder().addBuilder(
             context.ContextOuterClass.LinkId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
           int index) {
@@ -10754,7 +10073,7 @@ public final class ContextOuterClass {
             index, context.ContextOuterClass.LinkId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.LinkId link_ids = 3;</code>
        */
       public java.util.List<context.ContextOuterClass.LinkId.Builder> 
            getLinkIdsBuilderList() {
@@ -10827,108 +10146,55 @@ public final class ContextOuterClass {
 
   }
 
-  public interface TopologyDetailsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyDetails)
+  public interface TopologyIdListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.TopologyIdList)
       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>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
-    java.util.List<context.ContextOuterClass.Link> 
-        getLinksList();
+    java.util.List<context.ContextOuterClass.TopologyId> 
+        getTopologyIdsList();
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
-    context.ContextOuterClass.Link getLinks(int index);
+    context.ContextOuterClass.TopologyId getTopologyIds(int index);
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
-    int getLinksCount();
+    int getTopologyIdsCount();
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
-    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList();
+    java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
+        getTopologyIdsOrBuilderList();
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
-    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
+    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code context.TopologyDetails}
+   * Protobuf type {@code context.TopologyIdList}
    */
-  public static final class TopologyDetails extends
+  public static final class TopologyIdList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyDetails)
-      TopologyDetailsOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.TopologyIdList)
+      TopologyIdListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use TopologyDetails.newBuilder() to construct.
-    private TopologyDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use TopologyIdList.newBuilder() to construct.
+    private TopologyIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private TopologyDetails() {
-      name_ = "";
-      devices_ = java.util.Collections.emptyList();
-      links_ = java.util.Collections.emptyList();
+    private TopologyIdList() {
+      topologyIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new TopologyDetails();
+      return new TopologyIdList();
     }
 
     @java.lang.Override
@@ -10936,7 +10202,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private TopologyDetails(
+    private TopologyIdList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -10956,40 +10222,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
-              }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
+                topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              devices_.add(
-                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              links_.add(
-                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
+              topologyIds_.add(
+                  input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -11008,10 +10246,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          devices_ = java.util.Collections.unmodifiableList(devices_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          links_ = java.util.Collections.unmodifiableList(links_);
+          topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -11019,159 +10254,55 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
+      return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_TopologyIdList_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 getTopologyId();
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    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;
-    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);
+              context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
     }
 
-    public static final int LINKS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.Link> links_;
+    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-      return links_;
+    public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
+      return topologyIds_;
     }
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList() {
-      return links_;
+    public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
+        getTopologyIdsOrBuilderList() {
+      return topologyIds_;
     }
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
     @java.lang.Override
-    public int getLinksCount() {
-      return links_.size();
+    public int getTopologyIdsCount() {
+      return topologyIds_.size();
     }
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Link getLinks(int index) {
-      return links_.get(index);
+    public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
+      return topologyIds_.get(index);
     }
     /**
-     * <code>repeated .context.Link links = 4;</code>
+     * <code>repeated .context.TopologyId topology_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
+    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
         int index) {
-      return links_.get(index);
+      return topologyIds_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -11188,17 +10319,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (topologyId_ != null) {
-        output.writeMessage(1, getTopologyId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        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 < topologyIds_.size(); i++) {
+        output.writeMessage(1, topologyIds_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -11209,20 +10331,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (topologyId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getTopologyId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        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++) {
+      for (int i = 0; i < topologyIds_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, links_.get(i));
+          .computeMessageSize(1, topologyIds_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -11234,22 +10345,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.TopologyDetails)) {
+      if (!(obj instanceof context.ContextOuterClass.TopologyIdList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.TopologyDetails other = (context.ContextOuterClass.TopologyDetails) obj;
+      context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) 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 (!getTopologyIdsList()
+          .equals(other.getTopologyIdsList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -11261,88 +10363,78 @@ public final class ContextOuterClass {
       }
       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 (getTopologyIdsCount() > 0) {
+        hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
+        hash = (53 * hash) + getTopologyIdsList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
+    public static context.ContextOuterClass.TopologyIdList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
+    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.TopologyDetails parseFrom(
+    public static context.ContextOuterClass.TopologyIdList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
+    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.TopologyDetails parseFrom(byte[] data)
+    public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
+    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.TopologyDetails parseFrom(java.io.InputStream input)
+    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.TopologyDetails parseFrom(
+    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.TopologyDetails parseDelimitedFrom(java.io.InputStream input)
+    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.TopologyDetails parseDelimitedFrom(
+    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.TopologyDetails parseFrom(
+    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.TopologyDetails parseFrom(
+    public static context.ContextOuterClass.TopologyIdList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -11355,7 +10447,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyDetails prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.TopologyIdList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -11371,26 +10463,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.TopologyDetails}
+     * Protobuf type {@code context.TopologyIdList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyDetails)
-        context.ContextOuterClass.TopologyDetailsOrBuilder {
+        // @@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_TopologyDetails_descriptor;
+        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
+                context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
+      // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -11403,32 +10495,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getDevicesFieldBuilder();
-          getLinksFieldBuilder();
+          getTopologyIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
+        if (topologyIdsBuilder_ == null) {
+          topologyIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          devicesBuilder_.clear();
-        }
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          linksBuilder_.clear();
+          topologyIdsBuilder_.clear();
         }
         return this;
       }
@@ -11436,17 +10513,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
+        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyDetails.getDefaultInstance();
+      public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
+        return context.ContextOuterClass.TopologyIdList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyDetails build() {
-        context.ContextOuterClass.TopologyDetails result = buildPartial();
+      public context.ContextOuterClass.TopologyIdList build() {
+        context.ContextOuterClass.TopologyIdList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -11454,32 +10531,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyDetails buildPartial() {
-        context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
+      public context.ContextOuterClass.TopologyIdList buildPartial() {
+        context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
         int from_bitField0_ = bitField0_;
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
-        } else {
-          result.topologyId_ = topologyIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (devicesBuilder_ == null) {
+        if (topologyIdsBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            devices_ = java.util.Collections.unmodifiableList(devices_);
+            topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.devices_ = devices_;
-        } else {
-          result.devices_ = devicesBuilder_.build();
-        }
-        if (linksBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            links_ = java.util.Collections.unmodifiableList(links_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.links_ = links_;
+          result.topologyIds_ = topologyIds_;
         } else {
-          result.links_ = linksBuilder_.build();
+          result.topologyIds_ = topologyIdsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -11519,72 +10581,39 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyDetails) {
-          return mergeFrom((context.ContextOuterClass.TopologyDetails)other);
+        if (other instanceof context.ContextOuterClass.TopologyIdList) {
+          return mergeFrom((context.ContextOuterClass.TopologyIdList)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_;
-          onChanged();
-        }
-        if (devicesBuilder_ == null) {
-          if (!other.devices_.isEmpty()) {
-            if (devices_.isEmpty()) {
-              devices_ = other.devices_;
+      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 {
-              ensureDevicesIsMutable();
-              devices_.addAll(other.devices_);
+              ensureTopologyIdsIsMutable();
+              topologyIds_.addAll(other.topologyIds_);
             }
             onChanged();
           }
         } else {
-          if (!other.devices_.isEmpty()) {
-            if (devicesBuilder_.isEmpty()) {
-              devicesBuilder_.dispose();
-              devicesBuilder_ = null;
-              devices_ = other.devices_;
+          if (!other.topologyIds_.isEmpty()) {
+            if (topologyIdsBuilder_.isEmpty()) {
+              topologyIdsBuilder_.dispose();
+              topologyIdsBuilder_ = null;
+              topologyIds_ = other.topologyIds_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              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_ & ~0x00000002);
-            } else {
-              ensureLinksIsMutable();
-              links_.addAll(other.links_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.links_.isEmpty()) {
-            if (linksBuilder_.isEmpty()) {
-              linksBuilder_.dispose();
-              linksBuilder_ = null;
-              links_ = other.links_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              linksBuilder_ = 
+              topologyIdsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinksFieldBuilder() : null;
+                   getTopologyIdsFieldBuilder() : null;
             } else {
-              linksBuilder_.addAllMessages(other.links_);
+              topologyIdsBuilder_.addAllMessages(other.topologyIds_);
             }
           }
         }
@@ -11603,11 +10632,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.TopologyDetails parsedMessage = null;
+        context.ContextOuterClass.TopologyIdList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -11618,782 +10647,347 @@ public final class ContextOuterClass {
       }
       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 topologyIdBuilder_ != null || topologyId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
-          } else {
-            topologyId_ = value;
-          }
-          onChanged();
-        } else {
-          topologyIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-          onChanged();
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        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;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.Device> devices_ =
+      private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
         java.util.Collections.emptyList();
-      private void ensureDevicesIsMutable() {
+      private void ensureTopologyIdsIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
+          topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;
+          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
 
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
-        if (devicesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(devices_);
+      public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
+        if (topologyIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(topologyIds_);
         } else {
-          return devicesBuilder_.getMessageList();
+          return topologyIdsBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public int getDevicesCount() {
-        if (devicesBuilder_ == null) {
-          return devices_.size();
+      public int getTopologyIdsCount() {
+        if (topologyIdsBuilder_ == null) {
+          return topologyIds_.size();
         } else {
-          return devicesBuilder_.getCount();
+          return topologyIdsBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public context.ContextOuterClass.Device getDevices(int index) {
-        if (devicesBuilder_ == null) {
-          return devices_.get(index);
+      public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
+        if (topologyIdsBuilder_ == null) {
+          return topologyIds_.get(index);
         } else {
-          return devicesBuilder_.getMessage(index);
+          return topologyIdsBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder setDevices(
-          int index, context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
+      public Builder setTopologyIds(
+          int index, context.ContextOuterClass.TopologyId value) {
+        if (topologyIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureDevicesIsMutable();
-          devices_.set(index, value);
+          ensureTopologyIdsIsMutable();
+          topologyIds_.set(index, value);
           onChanged();
         } else {
-          devicesBuilder_.setMessage(index, value);
+          topologyIdsBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder setDevices(
-          int index, context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.set(index, builderForValue.build());
+      public Builder setTopologyIds(
+          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
+        if (topologyIdsBuilder_ == null) {
+          ensureTopologyIdsIsMutable();
+          topologyIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          devicesBuilder_.setMessage(index, builderForValue.build());
+          topologyIdsBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder addDevices(context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
+      public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
+        if (topologyIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureDevicesIsMutable();
-          devices_.add(value);
+          ensureTopologyIdsIsMutable();
+          topologyIds_.add(value);
           onChanged();
         } else {
-          devicesBuilder_.addMessage(value);
+          topologyIdsBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder addDevices(
-          int index, context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
+      public Builder addTopologyIds(
+          int index, context.ContextOuterClass.TopologyId value) {
+        if (topologyIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureDevicesIsMutable();
-          devices_.add(index, value);
+          ensureTopologyIdsIsMutable();
+          topologyIds_.add(index, value);
           onChanged();
         } else {
-          devicesBuilder_.addMessage(index, value);
+          topologyIdsBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder addDevices(
-          context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.add(builderForValue.build());
+      public Builder addTopologyIds(
+          context.ContextOuterClass.TopologyId.Builder builderForValue) {
+        if (topologyIdsBuilder_ == null) {
+          ensureTopologyIdsIsMutable();
+          topologyIds_.add(builderForValue.build());
           onChanged();
         } else {
-          devicesBuilder_.addMessage(builderForValue.build());
+          topologyIdsBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder addDevices(
-          int index, context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.add(index, builderForValue.build());
+      public Builder addTopologyIds(
+          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
+        if (topologyIdsBuilder_ == null) {
+          ensureTopologyIdsIsMutable();
+          topologyIds_.add(index, builderForValue.build());
           onChanged();
         } else {
-          devicesBuilder_.addMessage(index, builderForValue.build());
+          topologyIdsBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder addAllDevices(
-          java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
+      public Builder addAllTopologyIds(
+          java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
+        if (topologyIdsBuilder_ == null) {
+          ensureTopologyIdsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, devices_);
+              values, topologyIds_);
           onChanged();
         } else {
-          devicesBuilder_.addAllMessages(values);
+          topologyIdsBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder clearDevices() {
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
+      public Builder clearTopologyIds() {
+        if (topologyIdsBuilder_ == null) {
+          topologyIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          devicesBuilder_.clear();
+          topologyIdsBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public Builder removeDevices(int index) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.remove(index);
+      public Builder removeTopologyIds(int index) {
+        if (topologyIdsBuilder_ == null) {
+          ensureTopologyIdsIsMutable();
+          topologyIds_.remove(index);
           onChanged();
         } else {
-          devicesBuilder_.remove(index);
+          topologyIdsBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public context.ContextOuterClass.Device.Builder getDevicesBuilder(
+      public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
           int index) {
-        return getDevicesFieldBuilder().getBuilder(index);
+        return getTopologyIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
+      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
           int index) {
-        if (devicesBuilder_ == null) {
-          return devices_.get(index);  } else {
-          return devicesBuilder_.getMessageOrBuilder(index);
+        if (topologyIdsBuilder_ == null) {
+          return topologyIds_.get(index);  } else {
+          return topologyIdsBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-           getDevicesOrBuilderList() {
-        if (devicesBuilder_ != null) {
-          return devicesBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
+           getTopologyIdsOrBuilderList() {
+        if (topologyIdsBuilder_ != null) {
+          return topologyIdsBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(devices_);
+          return java.util.Collections.unmodifiableList(topologyIds_);
         }
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
-        return getDevicesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Device.getDefaultInstance());
+      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
+        return getTopologyIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.TopologyId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public context.ContextOuterClass.Device.Builder addDevicesBuilder(
+      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
           int index) {
-        return getDevicesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Device.getDefaultInstance());
+        return getTopologyIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.TopologyId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.Device devices = 3;</code>
+       * <code>repeated .context.TopologyId topology_ids = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.Device.Builder> 
-           getDevicesBuilderList() {
-        return getDevicesFieldBuilder().getBuilderList();
+      public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
+           getTopologyIdsBuilderList() {
+        return getTopologyIdsFieldBuilder().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_,
+          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());
-          devices_ = null;
+          topologyIds_ = null;
         }
-        return devicesBuilder_;
+        return topologyIdsBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
       }
 
-      private java.util.List<context.ContextOuterClass.Link> links_ =
-        java.util.Collections.emptyList();
-      private void ensureLinksIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
-          bitField0_ |= 0x00000002;
-         }
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
       }
 
-      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_ & ~0x00000002);
-          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_ & 0x00000002) != 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.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 {
-        return new TopologyDetails(input, extensionRegistry);
+      // @@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 {
+        return new TopologyIdList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<TopologyDetails> parser() {
+    public static com.google.protobuf.Parser<TopologyIdList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<TopologyDetails> getParserForType() {
+    public com.google.protobuf.Parser<TopologyIdList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
+    public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface TopologyIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyIdList)
+  public interface TopologyListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.TopologyList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
-    java.util.List<context.ContextOuterClass.TopologyId> 
-        getTopologyIdsList();
+    java.util.List<context.ContextOuterClass.Topology> 
+        getTopologiesList();
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
-    context.ContextOuterClass.TopologyId getTopologyIds(int index);
+    context.ContextOuterClass.Topology getTopologies(int index);
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
-    int getTopologyIdsCount();
+    int getTopologiesCount();
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
-    java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-        getTopologyIdsOrBuilderList();
+    java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
+        getTopologiesOrBuilderList();
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
+    context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code context.TopologyIdList}
+   * Protobuf type {@code context.TopologyList}
    */
-  public static final class TopologyIdList extends
+  public static final class TopologyList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyIdList)
-      TopologyIdListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.TopologyList)
+      TopologyListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use TopologyIdList.newBuilder() to construct.
-    private TopologyIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use TopologyList.newBuilder() to construct.
+    private TopologyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private TopologyIdList() {
-      topologyIds_ = java.util.Collections.emptyList();
+    private TopologyList() {
+      topologies_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new TopologyIdList();
+      return new TopologyList();
     }
 
     @java.lang.Override
@@ -12401,7 +10995,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private TopologyIdList(
+    private TopologyList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -12422,11 +11016,11 @@ public final class ContextOuterClass {
               break;
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
+                topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              topologyIds_.add(
-                  input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
+              topologies_.add(
+                  input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -12445,7 +11039,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+          topologies_ = java.util.Collections.unmodifiableList(topologies_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -12453,55 +11047,55 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
+      return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
+              context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
     }
 
-    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
+    public static final int TOPOLOGIES_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.Topology> topologies_;
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
-      return topologyIds_;
+    public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
+      return topologies_;
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-        getTopologyIdsOrBuilderList() {
-      return topologyIds_;
+    public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
+        getTopologiesOrBuilderList() {
+      return topologies_;
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
     @java.lang.Override
-    public int getTopologyIdsCount() {
-      return topologyIds_.size();
+    public int getTopologiesCount() {
+      return topologies_.size();
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
-      return topologyIds_.get(index);
+    public context.ContextOuterClass.Topology getTopologies(int index) {
+      return topologies_.get(index);
     }
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <code>repeated .context.Topology topologies = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
+    public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
         int index) {
-      return topologyIds_.get(index);
+      return topologies_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -12518,8 +11112,8 @@ public final class ContextOuterClass {
     @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));
+      for (int i = 0; i < topologies_.size(); i++) {
+        output.writeMessage(1, topologies_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -12530,9 +11124,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < topologyIds_.size(); i++) {
+      for (int i = 0; i < topologies_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, topologyIds_.get(i));
+          .computeMessageSize(1, topologies_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -12544,13 +11138,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.TopologyIdList)) {
+      if (!(obj instanceof context.ContextOuterClass.TopologyList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;
+      context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
 
-      if (!getTopologyIdsList()
-          .equals(other.getTopologyIdsList())) return false;
+      if (!getTopologiesList()
+          .equals(other.getTopologiesList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -12562,78 +11156,78 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getTopologyIdsCount() > 0) {
-        hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyIdsList().hashCode();
+      if (getTopologiesCount() > 0) {
+        hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
+        hash = (53 * hash) + getTopologiesList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
+    public static context.ContextOuterClass.TopologyList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
+    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.TopologyIdList parseFrom(
+    public static context.ContextOuterClass.TopologyList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
+    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.TopologyIdList parseFrom(byte[] data)
+    public static context.ContextOuterClass.TopologyList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
+    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.TopologyIdList parseFrom(java.io.InputStream input)
+    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.TopologyIdList parseFrom(
+    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.TopologyIdList parseDelimitedFrom(java.io.InputStream input)
+    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.TopologyIdList parseDelimitedFrom(
+    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.TopologyIdList parseFrom(
+    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.TopologyIdList parseFrom(
+    public static context.ContextOuterClass.TopologyList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12646,7 +11240,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyIdList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.TopologyList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -12662,26 +11256,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.TopologyIdList}
+     * Protobuf type {@code context.TopologyList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyIdList)
-        context.ContextOuterClass.TopologyIdListOrBuilder {
+        // @@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_TopologyIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
+                context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
+      // Construct using context.ContextOuterClass.TopologyList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -12694,17 +11288,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getTopologyIdsFieldBuilder();
+          getTopologiesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (topologyIdsBuilder_ == null) {
-          topologyIds_ = java.util.Collections.emptyList();
+        if (topologiesBuilder_ == null) {
+          topologies_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          topologyIdsBuilder_.clear();
+          topologiesBuilder_.clear();
         }
         return this;
       }
@@ -12712,17 +11306,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyIdList.getDefaultInstance();
+      public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
+        return context.ContextOuterClass.TopologyList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyIdList build() {
-        context.ContextOuterClass.TopologyIdList result = buildPartial();
+      public context.ContextOuterClass.TopologyList build() {
+        context.ContextOuterClass.TopologyList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -12730,17 +11324,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyIdList buildPartial() {
-        context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
+      public context.ContextOuterClass.TopologyList buildPartial() {
+        context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
         int from_bitField0_ = bitField0_;
-        if (topologyIdsBuilder_ == null) {
+        if (topologiesBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+            topologies_ = java.util.Collections.unmodifiableList(topologies_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.topologyIds_ = topologyIds_;
+          result.topologies_ = topologies_;
         } else {
-          result.topologyIds_ = topologyIdsBuilder_.build();
+          result.topologies_ = topologiesBuilder_.build();
         }
         onBuilt();
         return result;
@@ -12780,39 +11374,39 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyIdList) {
-          return mergeFrom((context.ContextOuterClass.TopologyIdList)other);
+        if (other instanceof context.ContextOuterClass.TopologyList) {
+          return mergeFrom((context.ContextOuterClass.TopologyList)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_;
+      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 {
-              ensureTopologyIdsIsMutable();
-              topologyIds_.addAll(other.topologyIds_);
+              ensureTopologiesIsMutable();
+              topologies_.addAll(other.topologies_);
             }
             onChanged();
           }
         } else {
-          if (!other.topologyIds_.isEmpty()) {
-            if (topologyIdsBuilder_.isEmpty()) {
-              topologyIdsBuilder_.dispose();
-              topologyIdsBuilder_ = null;
-              topologyIds_ = other.topologyIds_;
+          if (!other.topologies_.isEmpty()) {
+            if (topologiesBuilder_.isEmpty()) {
+              topologiesBuilder_.dispose();
+              topologiesBuilder_ = null;
+              topologies_ = other.topologies_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              topologyIdsBuilder_ = 
+              topologiesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getTopologyIdsFieldBuilder() : null;
+                   getTopologiesFieldBuilder() : null;
             } else {
-              topologyIdsBuilder_.addAllMessages(other.topologyIds_);
+              topologiesBuilder_.addAllMessages(other.topologies_);
             }
           }
         }
@@ -12831,11 +11425,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.TopologyIdList parsedMessage = null;
+        context.ContextOuterClass.TopologyList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -12846,244 +11440,244 @@ public final class ContextOuterClass {
       }
       private int bitField0_;
 
-      private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
+      private java.util.List<context.ContextOuterClass.Topology> topologies_ =
         java.util.Collections.emptyList();
-      private void ensureTopologyIdsIsMutable() {
+      private void ensureTopologiesIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
+          topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>(topologies_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
+          context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> topologiesBuilder_;
 
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
-        if (topologyIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(topologyIds_);
+      public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
+        if (topologiesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(topologies_);
         } else {
-          return topologyIdsBuilder_.getMessageList();
+          return topologiesBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public int getTopologyIdsCount() {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.size();
+      public int getTopologiesCount() {
+        if (topologiesBuilder_ == null) {
+          return topologies_.size();
         } else {
-          return topologyIdsBuilder_.getCount();
+          return topologiesBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.get(index);
+      public context.ContextOuterClass.Topology getTopologies(int index) {
+        if (topologiesBuilder_ == null) {
+          return topologies_.get(index);
         } else {
-          return topologyIdsBuilder_.getMessage(index);
+          return topologiesBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder setTopologyIds(
-          int index, context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
+      public Builder setTopologies(
+          int index, context.ContextOuterClass.Topology value) {
+        if (topologiesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.set(index, value);
+          ensureTopologiesIsMutable();
+          topologies_.set(index, value);
           onChanged();
         } else {
-          topologyIdsBuilder_.setMessage(index, value);
+          topologiesBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder setTopologyIds(
-          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.set(index, builderForValue.build());
+      public Builder setTopologies(
+          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
+        if (topologiesBuilder_ == null) {
+          ensureTopologiesIsMutable();
+          topologies_.set(index, builderForValue.build());
           onChanged();
         } else {
-          topologyIdsBuilder_.setMessage(index, builderForValue.build());
+          topologiesBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
+      public Builder addTopologies(context.ContextOuterClass.Topology value) {
+        if (topologiesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(value);
+          ensureTopologiesIsMutable();
+          topologies_.add(value);
           onChanged();
         } else {
-          topologyIdsBuilder_.addMessage(value);
+          topologiesBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder addTopologyIds(
-          int index, context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
+      public Builder addTopologies(
+          int index, context.ContextOuterClass.Topology value) {
+        if (topologiesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(index, value);
+          ensureTopologiesIsMutable();
+          topologies_.add(index, value);
           onChanged();
         } else {
-          topologyIdsBuilder_.addMessage(index, value);
+          topologiesBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder addTopologyIds(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(builderForValue.build());
+      public Builder addTopologies(
+          context.ContextOuterClass.Topology.Builder builderForValue) {
+        if (topologiesBuilder_ == null) {
+          ensureTopologiesIsMutable();
+          topologies_.add(builderForValue.build());
           onChanged();
         } else {
-          topologyIdsBuilder_.addMessage(builderForValue.build());
+          topologiesBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder addTopologyIds(
-          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(index, builderForValue.build());
+      public Builder addTopologies(
+          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
+        if (topologiesBuilder_ == null) {
+          ensureTopologiesIsMutable();
+          topologies_.add(index, builderForValue.build());
           onChanged();
         } else {
-          topologyIdsBuilder_.addMessage(index, builderForValue.build());
+          topologiesBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder addAllTopologyIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
+      public Builder addAllTopologies(
+          java.lang.Iterable<? extends context.ContextOuterClass.Topology> values) {
+        if (topologiesBuilder_ == null) {
+          ensureTopologiesIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, topologyIds_);
+              values, topologies_);
           onChanged();
         } else {
-          topologyIdsBuilder_.addAllMessages(values);
+          topologiesBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder clearTopologyIds() {
-        if (topologyIdsBuilder_ == null) {
-          topologyIds_ = java.util.Collections.emptyList();
+      public Builder clearTopologies() {
+        if (topologiesBuilder_ == null) {
+          topologies_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          topologyIdsBuilder_.clear();
+          topologiesBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public Builder removeTopologyIds(int index) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.remove(index);
+      public Builder removeTopologies(int index) {
+        if (topologiesBuilder_ == null) {
+          ensureTopologiesIsMutable();
+          topologies_.remove(index);
           onChanged();
         } else {
-          topologyIdsBuilder_.remove(index);
+          topologiesBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
+      public context.ContextOuterClass.Topology.Builder getTopologiesBuilder(
           int index) {
-        return getTopologyIdsFieldBuilder().getBuilder(index);
+        return getTopologiesFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
+      public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
           int index) {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.get(index);  } else {
-          return topologyIdsBuilder_.getMessageOrBuilder(index);
+        if (topologiesBuilder_ == null) {
+          return topologies_.get(index);  } else {
+          return topologiesBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-           getTopologyIdsOrBuilderList() {
-        if (topologyIdsBuilder_ != null) {
-          return topologyIdsBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
+           getTopologiesOrBuilderList() {
+        if (topologiesBuilder_ != null) {
+          return topologiesBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(topologyIds_);
+          return java.util.Collections.unmodifiableList(topologies_);
         }
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
-        return getTopologyIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.TopologyId.getDefaultInstance());
+      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder() {
+        return getTopologiesFieldBuilder().addBuilder(
+            context.ContextOuterClass.Topology.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
+      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder(
           int index) {
-        return getTopologyIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.TopologyId.getDefaultInstance());
+        return getTopologiesFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Topology.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
+       * <code>repeated .context.Topology topologies = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
-           getTopologyIdsBuilderList() {
-        return getTopologyIdsFieldBuilder().getBuilderList();
+      public java.util.List<context.ContextOuterClass.Topology.Builder> 
+           getTopologiesBuilderList() {
+        return getTopologiesFieldBuilder().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_,
+          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());
-          topologyIds_ = null;
+          topologies_ = null;
         }
-        return topologyIdsBuilder_;
+        return topologiesBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -13098,95 +11692,100 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.TopologyIdList)
+      // @@protoc_insertion_point(builder_scope:context.TopologyList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyIdList)
-    private static final context.ContextOuterClass.TopologyIdList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.TopologyList)
+    private static final context.ContextOuterClass.TopologyList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyIdList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyList();
     }
 
-    public static context.ContextOuterClass.TopologyIdList getDefaultInstance() {
+    public static context.ContextOuterClass.TopologyList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<TopologyIdList>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyIdList>() {
+    private static final com.google.protobuf.Parser<TopologyList>
+        PARSER = new com.google.protobuf.AbstractParser<TopologyList>() {
       @java.lang.Override
-      public TopologyIdList parsePartialFrom(
+      public TopologyList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyIdList(input, extensionRegistry);
+        return new TopologyList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<TopologyIdList> parser() {
+    public static com.google.protobuf.Parser<TopologyList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<TopologyIdList> getParserForType() {
+    public com.google.protobuf.Parser<TopologyList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
+    public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface TopologyListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyList)
+  public interface TopologyEventOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.TopologyEvent)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
-    java.util.List<context.ContextOuterClass.Topology> 
-        getTopologiesList();
+    boolean hasEvent();
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
-    context.ContextOuterClass.Topology getTopologies(int index);
+    context.ContextOuterClass.Event getEvent();
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
-    int getTopologiesCount();
+    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.TopologyId topology_id = 2;</code>
+     * @return Whether the topologyId field is set.
      */
-    java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
-        getTopologiesOrBuilderList();
+    boolean hasTopologyId();
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.TopologyId topology_id = 2;</code>
+     * @return The topologyId.
      */
-    context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
-        int index);
+    context.ContextOuterClass.TopologyId getTopologyId();
+    /**
+     * <code>.context.TopologyId topology_id = 2;</code>
+     */
+    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
   }
   /**
-   * Protobuf type {@code context.TopologyList}
+   * Protobuf type {@code context.TopologyEvent}
    */
-  public static final class TopologyList extends
+  public static final class TopologyEvent extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyList)
-      TopologyListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.TopologyEvent)
+      TopologyEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use TopologyList.newBuilder() to construct.
-    private TopologyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use TopologyEvent.newBuilder() to construct.
+    private TopologyEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private TopologyList() {
-      topologies_ = java.util.Collections.emptyList();
+    private TopologyEvent() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new TopologyList();
+      return new TopologyEvent();
     }
 
     @java.lang.Override
@@ -13194,7 +11793,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private TopologyList(
+    private TopologyEvent(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -13202,7 +11801,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -13214,12 +11812,29 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>();
-                mutable_bitField0_ |= 0x00000001;
+              context.ContextOuterClass.Event.Builder subBuilder = null;
+              if (event_ != null) {
+                subBuilder = event_.toBuilder();
               }
-              topologies_.add(
-                  input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry));
+              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(event_);
+                event_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+              if (topologyId_ != null) {
+                subBuilder = topologyId_.toBuilder();
+              }
+              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(topologyId_);
+                topologyId_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -13237,64 +11852,73 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          topologies_ = java.util.Collections.unmodifiableList(topologies_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
+      return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
+              context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
     }
 
-    public static final int TOPOLOGIES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Topology> topologies_;
+    public static final int EVENT_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Event event_;
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
-      return topologies_;
+    public boolean hasEvent() {
+      return event_ != null;
     }
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
-        getTopologiesOrBuilderList() {
-      return topologies_;
+    public context.ContextOuterClass.Event getEvent() {
+      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
     @java.lang.Override
-    public int getTopologiesCount() {
-      return topologies_.size();
+    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+      return getEvent();
     }
+
+    public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.TopologyId topologyId_;
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.TopologyId topology_id = 2;</code>
+     * @return Whether the topologyId field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Topology getTopologies(int index) {
-      return topologies_.get(index);
+    public boolean hasTopologyId() {
+      return topologyId_ != null;
     }
     /**
-     * <code>repeated .context.Topology topologies = 1;</code>
+     * <code>.context.TopologyId topology_id = 2;</code>
+     * @return The topologyId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
-        int index) {
-      return topologies_.get(index);
+    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 getTopologyId();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -13311,8 +11935,11 @@ public final class ContextOuterClass {
     @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));
+      if (event_ != null) {
+        output.writeMessage(1, getEvent());
+      }
+      if (topologyId_ != null) {
+        output.writeMessage(2, getTopologyId());
       }
       unknownFields.writeTo(output);
     }
@@ -13323,9 +11950,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < topologies_.size(); i++) {
+      if (event_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, topologies_.get(i));
+          .computeMessageSize(1, getEvent());
+      }
+      if (topologyId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getTopologyId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -13337,13 +11968,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.TopologyList)) {
+      if (!(obj instanceof context.ContextOuterClass.TopologyEvent)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
+      context.ContextOuterClass.TopologyEvent other = (context.ContextOuterClass.TopologyEvent) obj;
 
-      if (!getTopologiesList()
-          .equals(other.getTopologiesList())) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -13355,78 +11994,82 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getTopologiesCount() > 0) {
-        hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologiesList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.TopologyList parseFrom(
+    public static context.ContextOuterClass.TopologyEvent parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyList parseFrom(
+    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.TopologyList parseFrom(
+    public static context.ContextOuterClass.TopologyEvent parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyList parseFrom(
+    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.TopologyList parseFrom(byte[] data)
+    public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyList parseFrom(
+    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.TopologyList parseFrom(java.io.InputStream input)
+    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.TopologyList parseFrom(
+    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.TopologyList parseDelimitedFrom(java.io.InputStream input)
+    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.TopologyList parseDelimitedFrom(
+    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.TopologyList parseFrom(
+    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.TopologyList parseFrom(
+    public static context.ContextOuterClass.TopologyEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -13439,7 +12082,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.TopologyEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -13455,26 +12098,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.TopologyList}
+     * Protobuf type {@code context.TopologyEvent}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyList)
-        context.ContextOuterClass.TopologyListOrBuilder {
+        // @@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_TopologyList_descriptor;
+        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
+                context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.TopologyList.newBuilder()
+      // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -13487,17 +12130,22 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getTopologiesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (topologiesBuilder_ == null) {
-          topologies_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (eventBuilder_ == null) {
+          event_ = null;
         } else {
-          topologiesBuilder_.clear();
+          event_ = null;
+          eventBuilder_ = null;
+        }
+        if (topologyIdBuilder_ == null) {
+          topologyId_ = null;
+        } else {
+          topologyId_ = null;
+          topologyIdBuilder_ = null;
         }
         return this;
       }
@@ -13505,17 +12153,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
+        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyList.getDefaultInstance();
+      public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
+        return context.ContextOuterClass.TopologyEvent.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyList build() {
-        context.ContextOuterClass.TopologyList result = buildPartial();
+      public context.ContextOuterClass.TopologyEvent build() {
+        context.ContextOuterClass.TopologyEvent result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -13523,17 +12171,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyList buildPartial() {
-        context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
-        int from_bitField0_ = bitField0_;
-        if (topologiesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            topologies_ = java.util.Collections.unmodifiableList(topologies_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.topologies_ = topologies_;
+      public context.ContextOuterClass.TopologyEvent buildPartial() {
+        context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
+        if (eventBuilder_ == null) {
+          result.event_ = event_;
         } else {
-          result.topologies_ = topologiesBuilder_.build();
+          result.event_ = eventBuilder_.build();
+        }
+        if (topologyIdBuilder_ == null) {
+          result.topologyId_ = topologyId_;
+        } else {
+          result.topologyId_ = topologyIdBuilder_.build();
         }
         onBuilt();
         return result;
@@ -13573,41 +12221,21 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyList) {
-          return mergeFrom((context.ContextOuterClass.TopologyList)other);
+        if (other instanceof context.ContextOuterClass.TopologyEvent) {
+          return mergeFrom((context.ContextOuterClass.TopologyEvent)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_);
-            }
-          }
+      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.unknownFields);
         onChanged();
@@ -13624,11 +12252,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.TopologyList parsedMessage = null;
+        context.ContextOuterClass.TopologyEvent parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -13637,246 +12265,243 @@ public final class ContextOuterClass {
         }
         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_;
 
+      private context.ContextOuterClass.Event event_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 1;</code>
+       * @return Whether the event field is set.
        */
-      public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
-        if (topologiesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(topologies_);
-        } else {
-          return topologiesBuilder_.getMessageList();
-        }
+      public boolean hasEvent() {
+        return eventBuilder_ != null || event_ != null;
       }
       /**
-       * <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>
+       * <code>.context.Event event = 1;</code>
+       * @return The event.
        */
-      public context.ContextOuterClass.Topology getTopologies(int index) {
-        if (topologiesBuilder_ == null) {
-          return topologies_.get(index);
+      public context.ContextOuterClass.Event getEvent() {
+        if (eventBuilder_ == null) {
+          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         } else {
-          return topologiesBuilder_.getMessage(index);
+          return eventBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setTopologies(
-          int index, context.ContextOuterClass.Topology value) {
-        if (topologiesBuilder_ == null) {
+      public Builder setEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureTopologiesIsMutable();
-          topologies_.set(index, value);
+          event_ = value;
           onChanged();
         } else {
-          topologiesBuilder_.setMessage(index, value);
+          eventBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setTopologies(
-          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.set(index, builderForValue.build());
+      public Builder setEvent(
+          context.ContextOuterClass.Event.Builder builderForValue) {
+        if (eventBuilder_ == null) {
+          event_ = builderForValue.build();
           onChanged();
         } else {
-          topologiesBuilder_.setMessage(index, builderForValue.build());
+          eventBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder addTopologies(context.ContextOuterClass.Topology value) {
-        if (topologiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (event_ != null) {
+            event_ =
+              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+          } else {
+            event_ = value;
           }
-          ensureTopologiesIsMutable();
-          topologies_.add(value);
           onChanged();
         } else {
-          topologiesBuilder_.addMessage(value);
+          eventBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 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);
+      public Builder clearEvent() {
+        if (eventBuilder_ == null) {
+          event_ = null;
           onChanged();
         } else {
-          topologiesBuilder_.addMessage(index, value);
+          event_ = null;
+          eventBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder addTopologies(
-          context.ContextOuterClass.Topology.Builder builderForValue) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.add(builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.Event.Builder getEventBuilder() {
+        
+        onChanged();
+        return getEventFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Event event = 1;</code>
+       */
+      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+        if (eventBuilder_ != null) {
+          return eventBuilder_.getMessageOrBuilder();
         } else {
-          topologiesBuilder_.addMessage(builderForValue.build());
+          return event_ == null ?
+              context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.Event event = 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());
+      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 this;
+        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 topologyIdBuilder_ != null || topologyId_ != null;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</code>
+       * @return The topologyId.
        */
-      public Builder addAllTopologies(
-          java.lang.Iterable<? extends context.ContextOuterClass.Topology> values) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, topologies_);
-          onChanged();
+      public context.ContextOuterClass.TopologyId getTopologyId() {
+        if (topologyIdBuilder_ == null) {
+          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
         } else {
-          topologiesBuilder_.addAllMessages(values);
+          return topologyIdBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</code>
        */
-      public Builder clearTopologies() {
-        if (topologiesBuilder_ == null) {
-          topologies_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
+        if (topologyIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          topologyId_ = value;
           onChanged();
         } else {
-          topologiesBuilder_.clear();
+          topologyIdBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</code>
        */
-      public Builder removeTopologies(int index) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.remove(index);
+      public Builder setTopologyId(
+          context.ContextOuterClass.TopologyId.Builder builderForValue) {
+        if (topologyIdBuilder_ == null) {
+          topologyId_ = builderForValue.build();
           onChanged();
         } else {
-          topologiesBuilder_.remove(index);
+          topologyIdBuilder_.setMessage(builderForValue.build());
         }
+
         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>
+       * <code>.context.TopologyId topology_id = 2;</code>
        */
-      public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
-          int index) {
-        if (topologiesBuilder_ == null) {
-          return topologies_.get(index);  } else {
-          return topologiesBuilder_.getMessageOrBuilder(index);
+      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
+        if (topologyIdBuilder_ == null) {
+          if (topologyId_ != null) {
+            topologyId_ =
+              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
+          } else {
+            topologyId_ = value;
+          }
+          onChanged();
+        } else {
+          topologyIdBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
-           getTopologiesOrBuilderList() {
-        if (topologiesBuilder_ != null) {
-          return topologiesBuilder_.getMessageOrBuilderList();
+      public Builder clearTopologyId() {
+        if (topologyIdBuilder_ == null) {
+          topologyId_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(topologies_);
+          topologyId_ = null;
+          topologyIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</code>
        */
-      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder() {
-        return getTopologiesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Topology.getDefaultInstance());
+      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+        
+        onChanged();
+        return getTopologyIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</code>
        */
-      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder(
-          int index) {
-        return getTopologiesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Topology.getDefaultInstance());
+      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+        if (topologyIdBuilder_ != null) {
+          return topologyIdBuilder_.getMessageOrBuilder();
+        } else {
+          return topologyId_ == null ?
+              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
       }
       /**
-       * <code>repeated .context.Topology topologies = 1;</code>
+       * <code>.context.TopologyId topology_id = 2;</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),
+      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());
-          topologies_ = null;
+          topologyId_ = null;
         }
-        return topologiesBuilder_;
+        return topologyIdBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -13891,100 +12516,89 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.TopologyList)
+      // @@protoc_insertion_point(builder_scope:context.TopologyEvent)
     }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyList)
-    private static final context.ContextOuterClass.TopologyList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.TopologyEvent)
+    private static final context.ContextOuterClass.TopologyEvent DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyEvent();
     }
 
-    public static context.ContextOuterClass.TopologyList getDefaultInstance() {
+    public static context.ContextOuterClass.TopologyEvent getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<TopologyList>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyList>() {
+    private static final com.google.protobuf.Parser<TopologyEvent>
+        PARSER = new com.google.protobuf.AbstractParser<TopologyEvent>() {
       @java.lang.Override
-      public TopologyList parsePartialFrom(
+      public TopologyEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyList(input, extensionRegistry);
+        return new TopologyEvent(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<TopologyList> parser() {
+    public static com.google.protobuf.Parser<TopologyEvent> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<TopologyList> getParserForType() {
+    public com.google.protobuf.Parser<TopologyEvent> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
+    public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface TopologyEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyEvent)
+  public interface DeviceIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.DeviceId)
       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.
+     * <code>.context.Uuid device_uuid = 1;</code>
+     * @return Whether the deviceUuid field is set.
      */
-    boolean hasTopologyId();
+    boolean hasDeviceUuid();
     /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return The topologyId.
+     * <code>.context.Uuid device_uuid = 1;</code>
+     * @return The deviceUuid.
      */
-    context.ContextOuterClass.TopologyId getTopologyId();
+    context.ContextOuterClass.Uuid getDeviceUuid();
     /**
-     * <code>.context.TopologyId topology_id = 2;</code>
+     * <code>.context.Uuid device_uuid = 1;</code>
      */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+    context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder();
   }
   /**
-   * Protobuf type {@code context.TopologyEvent}
+   * <pre>
+   * ----- Device --------------------------------------------------------------------------------------------------------
+   * </pre>
+   *
+   * Protobuf type {@code context.DeviceId}
    */
-  public static final class TopologyEvent extends
+  public static final class DeviceId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyEvent)
-      TopologyEventOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.DeviceId)
+      DeviceIdOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use TopologyEvent.newBuilder() to construct.
-    private TopologyEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use DeviceId.newBuilder() to construct.
+    private DeviceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private TopologyEvent() {
+    private DeviceId() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new TopologyEvent();
+      return new DeviceId();
     }
 
     @java.lang.Override
@@ -13992,7 +12606,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private TopologyEvent(
+    private DeviceId(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -14011,27 +12625,14 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (deviceUuid_ != null) {
+                subBuilder = deviceUuid_.toBuilder();
               }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+              deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(deviceUuid_);
+                deviceUuid_ = subBuilder.buildPartial();
               }
 
               break;
@@ -14057,67 +12658,41 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
+      return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_DeviceId_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 getEvent();
+              context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
     }
 
-    public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.TopologyId topologyId_;
+    public static final int DEVICE_UUID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid deviceUuid_;
     /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return Whether the topologyId field is set.
+     * <code>.context.Uuid device_uuid = 1;</code>
+     * @return Whether the deviceUuid field is set.
      */
     @java.lang.Override
-    public boolean hasTopologyId() {
-      return topologyId_ != null;
+    public boolean hasDeviceUuid() {
+      return deviceUuid_ != null;
     }
     /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return The topologyId.
+     * <code>.context.Uuid device_uuid = 1;</code>
+     * @return The deviceUuid.
      */
     @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyId() {
-      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+    public context.ContextOuterClass.Uuid getDeviceUuid() {
+      return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
     }
     /**
-     * <code>.context.TopologyId topology_id = 2;</code>
+     * <code>.context.Uuid device_uuid = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-      return getTopologyId();
+    public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
+      return getDeviceUuid();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -14134,11 +12709,8 @@ public final class ContextOuterClass {
     @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());
+      if (deviceUuid_ != null) {
+        output.writeMessage(1, getDeviceUuid());
       }
       unknownFields.writeTo(output);
     }
@@ -14149,13 +12721,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (topologyId_ != null) {
+      if (deviceUuid_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getTopologyId());
+          .computeMessageSize(1, getDeviceUuid());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -14167,20 +12735,15 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.TopologyEvent)) {
+      if (!(obj instanceof context.ContextOuterClass.DeviceId)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.TopologyEvent other = (context.ContextOuterClass.TopologyEvent) obj;
+      context.ContextOuterClass.DeviceId other = (context.ContextOuterClass.DeviceId) 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 (hasDeviceUuid() != other.hasDeviceUuid()) return false;
+      if (hasDeviceUuid()) {
+        if (!getDeviceUuid()
+            .equals(other.getDeviceUuid())) return false;
       }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
@@ -14193,82 +12756,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (hasDeviceUuid()) {
+        hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
+        hash = (53 * hash) + getDeviceUuid().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
+    public static context.ContextOuterClass.DeviceId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
+    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.TopologyEvent parseFrom(
+    public static context.ContextOuterClass.DeviceId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
+    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.TopologyEvent parseFrom(byte[] data)
+    public static context.ContextOuterClass.DeviceId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
+    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.TopologyEvent parseFrom(java.io.InputStream input)
+    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.TopologyEvent parseFrom(
+    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.TopologyEvent parseDelimitedFrom(java.io.InputStream input)
+    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.TopologyEvent parseDelimitedFrom(
+    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.TopologyEvent parseFrom(
+    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.TopologyEvent parseFrom(
+    public static context.ContextOuterClass.DeviceId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14281,7 +12840,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyEvent prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.DeviceId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14297,26 +12856,30 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.TopologyEvent}
+     * <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.TopologyEvent)
-        context.ContextOuterClass.TopologyEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
+        // @@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_TopologyEvent_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
+                context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
+      // Construct using context.ContextOuterClass.DeviceId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -14334,17 +12897,11 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
+        if (deviceUuidBuilder_ == null) {
+          deviceUuid_ = null;
         } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
+          deviceUuid_ = null;
+          deviceUuidBuilder_ = null;
         }
         return this;
       }
@@ -14352,17 +12909,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyEvent.getDefaultInstance();
+      public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
+        return context.ContextOuterClass.DeviceId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyEvent build() {
-        context.ContextOuterClass.TopologyEvent result = buildPartial();
+      public context.ContextOuterClass.DeviceId build() {
+        context.ContextOuterClass.DeviceId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -14370,17 +12927,12 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.TopologyEvent buildPartial() {
-        context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
+      public context.ContextOuterClass.DeviceId buildPartial() {
+        context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
+        if (deviceUuidBuilder_ == null) {
+          result.deviceUuid_ = deviceUuid_;
         } else {
-          result.topologyId_ = topologyIdBuilder_.build();
+          result.deviceUuid_ = deviceUuidBuilder_.build();
         }
         onBuilt();
         return result;
@@ -14420,21 +12972,18 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyEvent) {
-          return mergeFrom((context.ContextOuterClass.TopologyEvent)other);
+        if (other instanceof context.ContextOuterClass.DeviceId) {
+          return mergeFrom((context.ContextOuterClass.DeviceId)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());
+      public Builder mergeFrom(context.ContextOuterClass.DeviceId other) {
+        if (other == context.ContextOuterClass.DeviceId.getDefaultInstance()) return this;
+        if (other.hasDeviceUuid()) {
+          mergeDeviceUuid(other.getDeviceUuid());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -14451,11 +13000,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.TopologyEvent parsedMessage = null;
+        context.ContextOuterClass.DeviceId parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -14465,242 +13014,123 @@ public final class ContextOuterClass {
         return this;
       }
 
-      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 eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        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 context.ContextOuterClass.Uuid deviceUuid_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       * @return Whether the topologyId field is set.
+       * <code>.context.Uuid device_uuid = 1;</code>
+       * @return Whether the deviceUuid field is set.
        */
-      public boolean hasTopologyId() {
-        return topologyIdBuilder_ != null || topologyId_ != null;
+      public boolean hasDeviceUuid() {
+        return deviceUuidBuilder_ != null || deviceUuid_ != null;
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       * @return The topologyId.
+       * <code>.context.Uuid device_uuid = 1;</code>
+       * @return The deviceUuid.
        */
-      public context.ContextOuterClass.TopologyId getTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+      public context.ContextOuterClass.Uuid getDeviceUuid() {
+        if (deviceUuidBuilder_ == null) {
+          return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
         } else {
-          return topologyIdBuilder_.getMessage();
+          return deviceUuidBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 1;</code>
        */
-      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
+      public Builder setDeviceUuid(context.ContextOuterClass.Uuid value) {
+        if (deviceUuidBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          topologyId_ = value;
+          deviceUuid_ = value;
           onChanged();
         } else {
-          topologyIdBuilder_.setMessage(value);
+          deviceUuidBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 1;</code>
        */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
+      public Builder setDeviceUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (deviceUuidBuilder_ == null) {
+          deviceUuid_ = builderForValue.build();
           onChanged();
         } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
+          deviceUuidBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 1;</code>
        */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
+      public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
+        if (deviceUuidBuilder_ == null) {
+          if (deviceUuid_ != null) {
+            deviceUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial();
           } else {
-            topologyId_ = value;
+            deviceUuid_ = value;
           }
           onChanged();
         } else {
-          topologyIdBuilder_.mergeFrom(value);
+          deviceUuidBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 1;</code>
        */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
+      public Builder clearDeviceUuid() {
+        if (deviceUuidBuilder_ == null) {
+          deviceUuid_ = null;
           onChanged();
         } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
+          deviceUuid_ = null;
+          deviceUuidBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 1;</code>
        */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+      public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
         
         onChanged();
-        return getTopologyIdFieldBuilder().getBuilder();
+        return getDeviceUuidFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 1;</code>
        */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-        if (topologyIdBuilder_ != null) {
-          return topologyIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
+        if (deviceUuidBuilder_ != null) {
+          return deviceUuidBuilder_.getMessageOrBuilder();
         } else {
-          return topologyId_ == null ?
-              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+          return deviceUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
         }
       }
       /**
-       * <code>.context.TopologyId topology_id = 2;</code>
+       * <code>.context.Uuid device_uuid = 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(),
+          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());
-          topologyId_ = null;
+          deviceUuid_ = null;
         }
-        return topologyIdBuilder_;
+        return deviceUuidBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -14715,89 +13145,180 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.TopologyEvent)
+      // @@protoc_insertion_point(builder_scope:context.DeviceId)
     }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyEvent)
-    private static final context.ContextOuterClass.TopologyEvent DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.DeviceId)
+    private static final context.ContextOuterClass.DeviceId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyEvent();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceId();
     }
 
-    public static context.ContextOuterClass.TopologyEvent getDefaultInstance() {
+    public static context.ContextOuterClass.DeviceId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<TopologyEvent>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyEvent>() {
+    private static final com.google.protobuf.Parser<DeviceId>
+        PARSER = new com.google.protobuf.AbstractParser<DeviceId>() {
       @java.lang.Override
-      public TopologyEvent parsePartialFrom(
+      public DeviceId parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyEvent(input, extensionRegistry);
+        return new DeviceId(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<TopologyEvent> parser() {
+    public static com.google.protobuf.Parser<DeviceId> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<TopologyEvent> getParserForType() {
+    public com.google.protobuf.Parser<DeviceId> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
+    public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface DeviceIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceId)
+  public interface DeviceOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.Device)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     * @return Whether the deviceUuid field is set.
+     * <code>.context.DeviceId device_id = 1;</code>
+     * @return Whether the deviceId field is set.
      */
-    boolean hasDeviceUuid();
+    boolean hasDeviceId();
     /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     * @return The deviceUuid.
+     * <code>.context.DeviceId device_id = 1;</code>
+     * @return The deviceId.
      */
-    context.ContextOuterClass.Uuid getDeviceUuid();
+    context.ContextOuterClass.DeviceId getDeviceId();
     /**
-     * <code>.context.Uuid device_uuid = 1;</code>
+     * <code>.context.DeviceId device_id = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder();
+    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+
+    /**
+     * <code>string device_type = 2;</code>
+     * @return The deviceType.
+     */
+    java.lang.String getDeviceType();
+    /**
+     * <code>string device_type = 2;</code>
+     * @return The bytes for deviceType.
+     */
+    com.google.protobuf.ByteString
+        getDeviceTypeBytes();
+
+    /**
+     * <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();
+
+    /**
+     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</code>
+     * @return The enum numeric value on the wire for deviceOperationalStatus.
+     */
+    int getDeviceOperationalStatusValue();
+    /**
+     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</code>
+     * @return The deviceOperationalStatus.
+     */
+    context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus();
+
+    /**
+     * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</code>
+     * @return A list containing the deviceDrivers.
+     */
+    java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList();
+    /**
+     * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</code>
+     * @return The count of deviceDrivers.
+     */
+    int getDeviceDriversCount();
+    /**
+     * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</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 = 5;</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 = 5;</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 = 6;</code>
+     */
+    java.util.List<context.ContextOuterClass.EndPoint> 
+        getDeviceEndpointsList();
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    context.ContextOuterClass.EndPoint getDeviceEndpoints(int index);
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    int getDeviceEndpointsCount();
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
+        getDeviceEndpointsOrBuilderList();
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
+        int index);
   }
   /**
-   * <pre>
-   * ----- Device --------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.DeviceId}
+   * Protobuf type {@code context.Device}
    */
-  public static final class DeviceId extends
+  public static final class Device extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceId)
-      DeviceIdOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Device)
+      DeviceOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use DeviceId.newBuilder() to construct.
-    private DeviceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Device.newBuilder() to construct.
+    private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private DeviceId() {
+    private Device() {
+      deviceType_ = "";
+      deviceOperationalStatus_ = 0;
+      deviceDrivers_ = java.util.Collections.emptyList();
+      deviceEndpoints_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new DeviceId();
+      return new Device();
     }
 
     @java.lang.Override
@@ -14805,7 +13326,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private DeviceId(
+    private Device(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -14813,6 +13334,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -14824,74 +13346,318 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (deviceUuid_ != null) {
-                subBuilder = deviceUuid_.toBuilder();
+              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+              if (deviceId_ != null) {
+                subBuilder = deviceId_.toBuilder();
               }
-              deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceUuid_);
-                deviceUuid_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(deviceId_);
+                deviceId_ = subBuilder.buildPartial();
               }
 
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              deviceType_ = s;
               break;
             }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
-    }
+            case 26: {
+              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+              if (deviceConfig_ != null) {
+                subBuilder = deviceConfig_.toBuilder();
+              }
+              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(deviceConfig_);
+                deviceConfig_ = subBuilder.buildPartial();
+              }
 
-    @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);
-    }
+              break;
+            }
+            case 32: {
+              int rawValue = input.readEnum();
 
-    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;
+              deviceOperationalStatus_ = rawValue;
+              break;
+            }
+            case 40: {
+              int rawValue = input.readEnum();
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              deviceDrivers_.add(rawValue);
+              break;
+            }
+            case 42: {
+              int length = input.readRawVarint32();
+              int oldLimit = input.pushLimit(length);
+              while(input.getBytesUntilLimit() > 0) {
+                int rawValue = input.readEnum();
+                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                  deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                deviceDrivers_.add(rawValue);
+              }
+              input.popLimit(oldLimit);
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              deviceEndpoints_.add(
+                  input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry));
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) != 0)) {
+          deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    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.Uuid device_uuid = 1;</code>
-     * @return The deviceUuid.
+     * <code>.context.DeviceId device_id = 1;</code>
+     * @return Whether the deviceId field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getDeviceUuid() {
-      return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+    public boolean hasDeviceId() {
+      return deviceId_ != null;
     }
     /**
-     * <code>.context.Uuid device_uuid = 1;</code>
+     * <code>.context.DeviceId device_id = 1;</code>
+     * @return The deviceId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
-      return getDeviceUuid();
+    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 getDeviceId();
+    }
+
+    public static final int DEVICE_TYPE_FIELD_NUMBER = 2;
+    private volatile java.lang.Object deviceType_;
+    /**
+     * <code>string device_type = 2;</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 = 2;</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 = 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 getDeviceConfig();
+    }
+
+    public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 4;
+    private int deviceOperationalStatus_;
+    /**
+     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</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 = 4;</code>
+     * @return The deviceOperationalStatus.
+     */
+    @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
+      @SuppressWarnings("deprecation")
+      context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
+      return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
+    }
+
+    public static final int DEVICE_DRIVERS_FIELD_NUMBER = 5;
+    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) {
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from);
+                return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
+              }
+            };
+    /**
+     * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</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 = 5;</code>
+     * @return The count of deviceDrivers.
+     */
+    @java.lang.Override
+    public int getDeviceDriversCount() {
+      return deviceDrivers_.size();
+    }
+    /**
+     * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</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 = 5;</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 = 5;</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 = 6;
+    private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
+      return deviceEndpoints_;
+    }
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
+        getDeviceEndpointsOrBuilderList() {
+      return deviceEndpoints_;
+    }
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    @java.lang.Override
+    public int getDeviceEndpointsCount() {
+      return deviceEndpoints_.size();
+    }
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
+      return deviceEndpoints_.get(index);
+    }
+    /**
+     * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
+        int index) {
+      return deviceEndpoints_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -14908,8 +13674,28 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (deviceUuid_ != null) {
-        output.writeMessage(1, getDeviceUuid());
+      getSerializedSize();
+      if (deviceId_ != null) {
+        output.writeMessage(1, getDeviceId());
+      }
+      if (!getDeviceTypeBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceType_);
+      }
+      if (deviceConfig_ != null) {
+        output.writeMessage(3, getDeviceConfig());
+      }
+      if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
+        output.writeEnum(4, deviceOperationalStatus_);
+      }
+      if (getDeviceDriversList().size() > 0) {
+        output.writeUInt32NoTag(42);
+        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(6, deviceEndpoints_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -14920,9 +13706,36 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (deviceUuid_ != null) {
+      if (deviceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDeviceUuid());
+          .computeMessageSize(1, getDeviceId());
+      }
+      if (!getDeviceTypeBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceType_);
+      }
+      if (deviceConfig_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, getDeviceConfig());
+      }
+      if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(4, 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(6, deviceEndpoints_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -14934,16 +13747,27 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.DeviceId)) {
+      if (!(obj instanceof context.ContextOuterClass.Device)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.DeviceId other = (context.ContextOuterClass.DeviceId) obj;
+      context.ContextOuterClass.Device other = (context.ContextOuterClass.Device) obj;
 
-      if (hasDeviceUuid() != other.hasDeviceUuid()) return false;
-      if (hasDeviceUuid()) {
-        if (!getDeviceUuid()
-            .equals(other.getDeviceUuid())) return false;
+      if (hasDeviceId() != other.hasDeviceId()) return false;
+      if (hasDeviceId()) {
+        if (!getDeviceId()
+            .equals(other.getDeviceId())) 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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -14955,78 +13779,94 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDeviceUuid()) {
-        hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceUuid().hashCode();
+      if (hasDeviceId()) {
+        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getDeviceId().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();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.DeviceId parseFrom(
+    public static context.ContextOuterClass.Device parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.DeviceId parseFrom(
+    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.DeviceId parseFrom(
+    public static context.ContextOuterClass.Device parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.DeviceId parseFrom(
+    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.DeviceId parseFrom(byte[] data)
+    public static context.ContextOuterClass.Device parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.DeviceId parseFrom(
+    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.DeviceId parseFrom(java.io.InputStream input)
+    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.DeviceId parseFrom(
+    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.DeviceId parseDelimitedFrom(java.io.InputStream input)
+    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.DeviceId parseDelimitedFrom(
+    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.DeviceId parseFrom(
+    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.DeviceId parseFrom(
+    public static context.ContextOuterClass.Device parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -15039,7 +13879,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceId prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Device prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -15055,30 +13895,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * <pre>
-     * ----- Device --------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.DeviceId}
+     * Protobuf type {@code context.Device}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceId)
-        context.ContextOuterClass.DeviceIdOrBuilder {
+        // @@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_DeviceId_descriptor;
+        return context.ContextOuterClass.internal_static_context_Device_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
+                context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.DeviceId.newBuilder()
+      // Construct using context.ContextOuterClass.Device.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -15091,16 +13927,35 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getDeviceEndpointsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (deviceUuidBuilder_ == null) {
-          deviceUuid_ = null;
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
         } else {
-          deviceUuid_ = null;
-          deviceUuidBuilder_ = null;
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
+        }
+        deviceType_ = "";
+
+        if (deviceConfigBuilder_ == null) {
+          deviceConfig_ = null;
+        } else {
+          deviceConfig_ = null;
+          deviceConfigBuilder_ = null;
+        }
+        deviceOperationalStatus_ = 0;
+
+        deviceDrivers_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (deviceEndpointsBuilder_ == null) {
+          deviceEndpoints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          deviceEndpointsBuilder_.clear();
         }
         return this;
       }
@@ -15108,17 +13963,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
+        return context.ContextOuterClass.internal_static_context_Device_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceId.getDefaultInstance();
+      public context.ContextOuterClass.Device getDefaultInstanceForType() {
+        return context.ContextOuterClass.Device.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.DeviceId build() {
-        context.ContextOuterClass.DeviceId result = buildPartial();
+      public context.ContextOuterClass.Device build() {
+        context.ContextOuterClass.Device result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -15126,12 +13981,34 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.DeviceId buildPartial() {
-        context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
-        if (deviceUuidBuilder_ == null) {
-          result.deviceUuid_ = deviceUuid_;
+      public context.ContextOuterClass.Device buildPartial() {
+        context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
+        int from_bitField0_ = bitField0_;
+        if (deviceIdBuilder_ == null) {
+          result.deviceId_ = deviceId_;
         } else {
-          result.deviceUuid_ = deviceUuidBuilder_.build();
+          result.deviceId_ = deviceIdBuilder_.build();
+        }
+        result.deviceType_ = deviceType_;
+        if (deviceConfigBuilder_ == null) {
+          result.deviceConfig_ = deviceConfig_;
+        } else {
+          result.deviceConfig_ = deviceConfigBuilder_.build();
+        }
+        result.deviceOperationalStatus_ = deviceOperationalStatus_;
+        if (((bitField0_ & 0x00000001) != 0)) {
+          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
+          bitField0_ = (bitField0_ & ~0x00000001);
+        }
+        result.deviceDrivers_ = deviceDrivers_;
+        if (deviceEndpointsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) != 0)) {
+            deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.deviceEndpoints_ = deviceEndpoints_;
+        } else {
+          result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -15171,438 +14048,944 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceId) {
-          return mergeFrom((context.ContextOuterClass.DeviceId)other);
+        if (other instanceof context.ContextOuterClass.Device) {
+          return mergeFrom((context.ContextOuterClass.Device)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());
+      public Builder mergeFrom(context.ContextOuterClass.Device other) {
+        if (other == context.ContextOuterClass.Device.getDefaultInstance()) return this;
+        if (other.hasDeviceId()) {
+          mergeDeviceId(other.getDeviceId());
         }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        context.ContextOuterClass.DeviceId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
+        if (!other.getDeviceType().isEmpty()) {
+          deviceType_ = other.deviceType_;
+          onChanged();
         }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid deviceUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
+        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_ & ~0x00000001);
+          } else {
+            ensureDeviceDriversIsMutable();
+            deviceDrivers_.addAll(other.deviceDrivers_);
+          }
+          onChanged();
+        }
+        if (deviceEndpointsBuilder_ == null) {
+          if (!other.deviceEndpoints_.isEmpty()) {
+            if (deviceEndpoints_.isEmpty()) {
+              deviceEndpoints_ = other.deviceEndpoints_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureDeviceEndpointsIsMutable();
+              deviceEndpoints_.addAll(other.deviceEndpoints_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.deviceEndpoints_.isEmpty()) {
+            if (deviceEndpointsBuilder_.isEmpty()) {
+              deviceEndpointsBuilder_.dispose();
+              deviceEndpointsBuilder_ = null;
+              deviceEndpoints_ = other.deviceEndpoints_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              deviceEndpointsBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getDeviceEndpointsFieldBuilder() : null;
+            } else {
+              deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        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 {
+        context.ContextOuterClass.Device parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        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.Uuid device_uuid = 1;</code>
-       * @return Whether the deviceUuid field is set.
+       * <code>.context.DeviceId device_id = 1;</code>
+       * @return Whether the deviceId field is set.
        */
-      public boolean hasDeviceUuid() {
-        return deviceUuidBuilder_ != null || deviceUuid_ != null;
+      public boolean hasDeviceId() {
+        return deviceIdBuilder_ != null || deviceId_ != null;
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       * @return The deviceUuid.
+       * <code>.context.DeviceId device_id = 1;</code>
+       * @return The deviceId.
        */
-      public context.ContextOuterClass.Uuid getDeviceUuid() {
-        if (deviceUuidBuilder_ == null) {
-          return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+      public context.ContextOuterClass.DeviceId getDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         } else {
-          return deviceUuidBuilder_.getMessage();
+          return deviceIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 1;</code>
        */
-      public Builder setDeviceUuid(context.ContextOuterClass.Uuid value) {
-        if (deviceUuidBuilder_ == null) {
+      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          deviceUuid_ = value;
+          deviceId_ = value;
           onChanged();
         } else {
-          deviceUuidBuilder_.setMessage(value);
+          deviceIdBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 1;</code>
        */
-      public Builder setDeviceUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (deviceUuidBuilder_ == null) {
-          deviceUuid_ = builderForValue.build();
+      public Builder setDeviceId(
+          context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = builderForValue.build();
           onChanged();
         } else {
-          deviceUuidBuilder_.setMessage(builderForValue.build());
+          deviceIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 1;</code>
        */
-      public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
-        if (deviceUuidBuilder_ == null) {
-          if (deviceUuid_ != null) {
-            deviceUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial();
+      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
+          if (deviceId_ != null) {
+            deviceId_ =
+              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
           } else {
-            deviceUuid_ = value;
+            deviceId_ = value;
           }
           onChanged();
         } else {
-          deviceUuidBuilder_.mergeFrom(value);
+          deviceIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 1;</code>
        */
-      public Builder clearDeviceUuid() {
-        if (deviceUuidBuilder_ == null) {
-          deviceUuid_ = null;
+      public Builder clearDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
           onChanged();
         } else {
-          deviceUuid_ = null;
-          deviceUuidBuilder_ = null;
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 1;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
+      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
         
         onChanged();
-        return getDeviceUuidFieldBuilder().getBuilder();
+        return getDeviceIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 1;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
-        if (deviceUuidBuilder_ != null) {
-          return deviceUuidBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+        if (deviceIdBuilder_ != null) {
+          return deviceIdBuilder_.getMessageOrBuilder();
         } else {
-          return deviceUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+          return deviceId_ == null ?
+              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
       }
       /**
-       * <code>.context.Uuid device_uuid = 1;</code>
+       * <code>.context.DeviceId device_id = 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(),
+          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());
-          deviceUuid_ = null;
+          deviceId_ = null;
         }
-        return deviceUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return deviceIdBuilder_;
       }
 
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+      private java.lang.Object deviceType_ = "";
+      /**
+       * <code>string device_type = 2;</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;
+        }
       }
-
-
-      // @@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 {
-        return new DeviceId(input, extensionRegistry);
+      /**
+       * <code>string device_type = 2;</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;
+        }
       }
-    };
-
-    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;
-    }
-
+      /**
+       * <code>string device_type = 2;</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;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string device_type = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearDeviceType() {
+        
+        deviceType_ = getDefaultInstance().getDeviceType();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string device_type = 2;</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;
+        onChanged();
+        return this;
+      }
 
-  public interface DeviceOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Device)
-      com.google.protobuf.MessageOrBuilder {
+      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 deviceConfigBuilder_ != null || deviceConfig_ != null;
+      }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          deviceConfigBuilder_.setMessage(value);
+        }
 
-    /**
-     * <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();
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public Builder setDeviceConfig(
+          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
+        if (deviceConfigBuilder_ == null) {
+          deviceConfig_ = builderForValue.build();
+          onChanged();
+        } else {
+          deviceConfigBuilder_.setMessage(builderForValue.build());
+        }
 
-    /**
-     * <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();
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
+        if (deviceConfigBuilder_ == null) {
+          if (deviceConfig_ != null) {
+            deviceConfig_ =
+              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
+          } else {
+            deviceConfig_ = value;
+          }
+          onChanged();
+        } else {
+          deviceConfigBuilder_.mergeFrom(value);
+        }
 
-    /**
-     * <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();
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public Builder clearDeviceConfig() {
+        if (deviceConfigBuilder_ == null) {
+          deviceConfig_ = null;
+          onChanged();
+        } else {
+          deviceConfig_ = null;
+          deviceConfigBuilder_ = null;
+        }
 
-    /**
-     * <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();
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
+        
+        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_;
+      }
 
-    /**
-     * <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();
+      private int deviceOperationalStatus_ = 0;
+      /**
+       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</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 = 4;</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;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</code>
+       * @return The deviceOperationalStatus.
+       */
+      @java.lang.Override
+      public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
+        @SuppressWarnings("deprecation")
+        context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
+        return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
+      }
+      /**
+       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</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();
+        }
+        
+        deviceOperationalStatus_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearDeviceOperationalStatus() {
+        
+        deviceOperationalStatus_ = 0;
+        onChanged();
+        return this;
+      }
 
-    /**
-     * <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);
+      private java.util.List<java.lang.Integer> deviceDrivers_ =
+        java.util.Collections.emptyList();
+      private void ensureDeviceDriversIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
+          bitField0_ |= 0x00000001;
+        }
+      }
+      /**
+       * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</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 = 5;</code>
+       * @return The count of deviceDrivers.
+       */
+      public int getDeviceDriversCount() {
+        return deviceDrivers_.size();
+      }
+      /**
+       * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</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 = 5;</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 = 5;</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 = 5;</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 = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearDeviceDrivers() {
+        deviceDrivers_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .context.DeviceDriverEnum device_drivers = 5;</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 = 5;</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 = 5;</code>
+       * @param index The index of the value to return.
+       * @return The enum numeric value on the wire of deviceDrivers at the given index.
+       * @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 = 5;</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 = 5;</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;
+      }
 
-    /**
-     * <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);
+      private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ =
+        java.util.Collections.emptyList();
+      private void ensureDeviceEndpointsIsMutable() {
+        if (!((bitField0_ & 0x00000002) != 0)) {
+          deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> deviceEndpointsBuilder_;
+
+      /**
+       * <code>repeated .context.EndPoint device_endpoints = 6;</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 = 6;</code>
+       */
+      public int getDeviceEndpointsCount() {
+        if (deviceEndpointsBuilder_ == null) {
+          return deviceEndpoints_.size();
+        } else {
+          return deviceEndpointsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .context.EndPoint device_endpoints = 6;</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 = 6;</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 = 6;</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 = 6;</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 = 6;</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 = 6;</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 = 6;</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 = 6;</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 = 6;</code>
+       */
+      public Builder clearDeviceEndpoints() {
+        if (deviceEndpointsBuilder_ == null) {
+          deviceEndpoints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          deviceEndpointsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .context.EndPoint device_endpoints = 6;</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 = 6;</code>
+       */
+      public context.ContextOuterClass.EndPoint.Builder getDeviceEndpointsBuilder(
+          int index) {
+        return getDeviceEndpointsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .context.EndPoint device_endpoints = 6;</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 = 6;</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 = 6;</code>
+       */
+      public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder() {
+        return getDeviceEndpointsFieldBuilder().addBuilder(
+            context.ContextOuterClass.EndPoint.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.EndPoint device_endpoints = 6;</code>
+       */
+      public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder(
+          int index) {
+        return getDeviceEndpointsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.EndPoint.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.EndPoint device_endpoints = 6;</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_ & 0x00000002) != 0),
+                  getParentForChildren(),
+                  isClean());
+          deviceEndpoints_ = null;
+        }
+        return deviceEndpointsBuilder_;
+      }
+      @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 {
+        return new Device(input, extensionRegistry);
+      }
+    };
+
+    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 DeviceConfigOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.DeviceConfig)
+      com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    java.util.List<context.ContextOuterClass.Component> 
-        getComponentList();
+    java.util.List<context.ContextOuterClass.ConfigRule> 
+        getConfigRulesList();
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.Component getComponent(int index);
+    context.ContextOuterClass.ConfigRule getConfigRules(int index);
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    int getComponentCount();
+    int getConfigRulesCount();
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-        getComponentOrBuilderList();
+    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+        getConfigRulesOrBuilderList();
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
+    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
         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}
+   * Protobuf type {@code context.DeviceConfig}
    */
-  public static final class Device extends
+  public static final class DeviceConfig extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Device)
-      DeviceOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.DeviceConfig)
+      DeviceConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use Device.newBuilder() to construct.
-    private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use DeviceConfig.newBuilder() to construct.
+    private DeviceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private Device() {
-      name_ = "";
-      deviceType_ = "";
-      deviceOperationalStatus_ = 0;
-      deviceDrivers_ = java.util.Collections.emptyList();
-      deviceEndpoints_ = java.util.Collections.emptyList();
-      component_ = java.util.Collections.emptyList();
+    private DeviceConfig() {
+      configRules_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new Device();
+      return new DeviceConfig();
     }
 
     @java.lang.Override
@@ -15610,7 +14993,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Device(
+    private DeviceConfig(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -15630,101 +15013,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              deviceType_ = s;
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-              if (deviceConfig_ != null) {
-                subBuilder = deviceConfig_.toBuilder();
-              }
-              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceConfig_);
-                deviceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 40: {
-              int rawValue = input.readEnum();
-
-              deviceOperationalStatus_ = rawValue;
-              break;
-            }
-            case 48: {
-              int rawValue = input.readEnum();
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              deviceDrivers_.add(rawValue);
-              break;
-            }
-            case 50: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                  deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
-                  mutable_bitField0_ |= 0x00000001;
-                }
-                deviceDrivers_.add(rawValue);
-              }
-              input.popLimit(oldLimit);
-              break;
-            }
-            case 58: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              deviceEndpoints_.add(
-                  input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry));
-              break;
-            }
-            case 66: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                component_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              component_.add(
-                  input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry));
-              break;
-            }
-            case 74: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (controllerId_ != null) {
-                subBuilder = controllerId_.toBuilder();
-              }
-              controllerId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(controllerId_);
-                controllerId_ = subBuilder.buildPartial();
-              }
-
+              configRules_.add(
+                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -15743,13 +15037,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          component_ = java.util.Collections.unmodifiableList(component_);
+          configRules_ = java.util.Collections.unmodifiableList(configRules_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -15757,358 +15045,55 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Device_descriptor;
+      return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_DeviceConfig_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 getDeviceId();
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    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;
-    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 getDeviceConfig();
-    }
-
-    public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;
-    private int deviceOperationalStatus_;
-    /**
-     * <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() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
-      return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
-    }
-
-    public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;
-    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) {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(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;
-    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);
+              context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
     }
 
-    public static final int COMPONENT_FIELD_NUMBER = 8;
-    private java.util.List<context.ContextOuterClass.Component> component_;
+    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Component> getComponentList() {
-      return component_;
+    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+      return configRules_;
     }
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-        getComponentOrBuilderList() {
-      return component_;
+    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+        getConfigRulesOrBuilderList() {
+      return configRules_;
     }
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public int getComponentCount() {
-      return component_.size();
+    public int getConfigRulesCount() {
+      return configRules_.size();
     }
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Component getComponent(int index) {
-      return component_.get(index);
+    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+      return configRules_.get(index);
     }
     /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
+    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
         int index) {
-      return component_.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 getControllerId();
+      return configRules_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -16125,37 +15110,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      if (deviceId_ != null) {
-        output.writeMessage(1, getDeviceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      if (!getDeviceTypeBytes().isEmpty()) {
-        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 < component_.size(); i++) {
-        output.writeMessage(8, component_.get(i));
-      }
-      if (controllerId_ != null) {
-        output.writeMessage(9, getControllerId());
+      for (int i = 0; i < configRules_.size(); i++) {
+        output.writeMessage(1, configRules_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -16166,47 +15122,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDeviceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      if (!getDeviceTypeBytes().isEmpty()) {
-        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 < component_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, component_.get(i));
-      }
-      if (controllerId_ != null) {
+      for (int i = 0; i < configRules_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, getControllerId());
+          .computeMessageSize(1, configRules_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -16218,36 +15136,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Device)) {
+      if (!(obj instanceof context.ContextOuterClass.DeviceConfig)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.Device other = (context.ContextOuterClass.Device) obj;
+      context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) 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 (!getComponentList()
-          .equals(other.getComponentList())) return false;
-      if (hasControllerId() != other.hasControllerId()) return false;
-      if (hasControllerId()) {
-        if (!getControllerId()
-            .equals(other.getControllerId())) return false;
-      }
+      if (!getConfigRulesList()
+          .equals(other.getConfigRulesList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -16259,104 +15154,78 @@ public final class ContextOuterClass {
       }
       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 (getComponentCount() > 0) {
-        hash = (37 * hash) + COMPONENT_FIELD_NUMBER;
-        hash = (53 * hash) + getComponentList().hashCode();
-      }
-      if (hasControllerId()) {
-        hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getControllerId().hashCode();
+      if (getConfigRulesCount() > 0) {
+        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
+        hash = (53 * hash) + getConfigRulesList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Device parseFrom(
+    public static context.ContextOuterClass.DeviceConfig parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Device parseFrom(
+    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.Device parseFrom(
+    public static context.ContextOuterClass.DeviceConfig parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Device parseFrom(
+    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.Device parseFrom(byte[] data)
+    public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Device parseFrom(
+    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.Device parseFrom(java.io.InputStream input)
+    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.Device parseFrom(
+    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.Device parseDelimitedFrom(java.io.InputStream input)
+    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.Device parseDelimitedFrom(
+    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.Device parseFrom(
+    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.Device parseFrom(
+    public static context.ContextOuterClass.DeviceConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -16369,7 +15238,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Device prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.DeviceConfig prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -16385,26 +15254,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Device}
+     * Protobuf type {@code context.DeviceConfig}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Device)
-        context.ContextOuterClass.DeviceOrBuilder {
+        // @@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_Device_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
+                context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.Device.newBuilder()
+      // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -16417,50 +15286,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getDeviceEndpointsFieldBuilder();
-          getComponentFieldBuilder();
+          getConfigRulesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
+        if (configRulesBuilder_ == null) {
+          configRules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        name_ = "";
-
-        deviceType_ = "";
-
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-        deviceOperationalStatus_ = 0;
-
-        deviceDrivers_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (deviceEndpointsBuilder_ == null) {
-          deviceEndpoints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          deviceEndpointsBuilder_.clear();
-        }
-        if (componentBuilder_ == null) {
-          component_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          componentBuilder_.clear();
-        }
-        if (controllerIdBuilder_ == null) {
-          controllerId_ = null;
-        } else {
-          controllerId_ = null;
-          controllerIdBuilder_ = null;
+          configRulesBuilder_.clear();
         }
         return this;
       }
@@ -16468,17 +15304,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Device_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Device getDefaultInstanceForType() {
-        return context.ContextOuterClass.Device.getDefaultInstance();
+      public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
+        return context.ContextOuterClass.DeviceConfig.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Device build() {
-        context.ContextOuterClass.Device result = buildPartial();
+      public context.ContextOuterClass.DeviceConfig build() {
+        context.ContextOuterClass.DeviceConfig result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -16486,49 +15322,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Device buildPartial() {
-        context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
+      public context.ContextOuterClass.DeviceConfig buildPartial() {
+        context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
         int from_bitField0_ = bitField0_;
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        result.name_ = name_;
-        result.deviceType_ = deviceType_;
-        if (deviceConfigBuilder_ == null) {
-          result.deviceConfig_ = deviceConfig_;
-        } else {
-          result.deviceConfig_ = deviceConfigBuilder_.build();
-        }
-        result.deviceOperationalStatus_ = deviceOperationalStatus_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.deviceDrivers_ = deviceDrivers_;
-        if (deviceEndpointsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.deviceEndpoints_ = deviceEndpoints_;
-        } else {
-          result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
-        }
-        if (componentBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            component_ = java.util.Collections.unmodifiableList(component_);
-            bitField0_ = (bitField0_ & ~0x00000004);
+        if (configRulesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            configRules_ = java.util.Collections.unmodifiableList(configRules_);
+            bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.component_ = component_;
-        } else {
-          result.component_ = componentBuilder_.build();
-        }
-        if (controllerIdBuilder_ == null) {
-          result.controllerId_ = controllerId_;
+          result.configRules_ = configRules_;
         } else {
-          result.controllerId_ = controllerIdBuilder_.build();
+          result.configRules_ = configRulesBuilder_.build();
         }
         onBuilt();
         return result;
@@ -16568,98 +15372,42 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Device) {
-          return mergeFrom((context.ContextOuterClass.Device)other);
+        if (other instanceof context.ContextOuterClass.DeviceConfig) {
+          return mergeFrom((context.ContextOuterClass.DeviceConfig)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_;
-          onChanged();
-        }
-        if (!other.getDeviceType().isEmpty()) {
-          deviceType_ = other.deviceType_;
-          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_ & ~0x00000001);
-          } else {
-            ensureDeviceDriversIsMutable();
-            deviceDrivers_.addAll(other.deviceDrivers_);
-          }
-          onChanged();
-        }
-        if (deviceEndpointsBuilder_ == null) {
-          if (!other.deviceEndpoints_.isEmpty()) {
-            if (deviceEndpoints_.isEmpty()) {
-              deviceEndpoints_ = other.deviceEndpoints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureDeviceEndpointsIsMutable();
-              deviceEndpoints_.addAll(other.deviceEndpoints_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.deviceEndpoints_.isEmpty()) {
-            if (deviceEndpointsBuilder_.isEmpty()) {
-              deviceEndpointsBuilder_.dispose();
-              deviceEndpointsBuilder_ = null;
-              deviceEndpoints_ = other.deviceEndpoints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              deviceEndpointsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDeviceEndpointsFieldBuilder() : null;
-            } else {
-              deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
-            }
-          }
-        }
-        if (componentBuilder_ == null) {
-          if (!other.component_.isEmpty()) {
-            if (component_.isEmpty()) {
-              component_ = other.component_;
-              bitField0_ = (bitField0_ & ~0x00000004);
+      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 {
-              ensureComponentIsMutable();
-              component_.addAll(other.component_);
+              ensureConfigRulesIsMutable();
+              configRules_.addAll(other.configRules_);
             }
             onChanged();
           }
         } else {
-          if (!other.component_.isEmpty()) {
-            if (componentBuilder_.isEmpty()) {
-              componentBuilder_.dispose();
-              componentBuilder_ = null;
-              component_ = other.component_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              componentBuilder_ = 
+          if (!other.configRules_.isEmpty()) {
+            if (configRulesBuilder_.isEmpty()) {
+              configRulesBuilder_.dispose();
+              configRulesBuilder_ = null;
+              configRules_ = other.configRules_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              configRulesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getComponentFieldBuilder() : null;
+                   getConfigRulesFieldBuilder() : null;
             } else {
-              componentBuilder_.addAllMessages(other.component_);
+              configRulesBuilder_.addAllMessages(other.configRules_);
             }
           }
         }
-        if (other.hasControllerId()) {
-          mergeControllerId(other.getControllerId());
-        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -16675,11 +15423,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.Device parsedMessage = null;
+        context.ContextOuterClass.DeviceConfig parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -16690,8746 +15438,249 @@ public final class ContextOuterClass {
       }
       private int bitField0_;
 
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
+      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>.context.DeviceId device_id = 1;</code>
-       * @return Whether the deviceId field is set.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
+      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+        if (configRulesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(configRules_);
+        } else {
+          return configRulesBuilder_.getMessageList();
+        }
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       * @return The deviceId.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+      public int getConfigRulesCount() {
+        if (configRulesBuilder_ == null) {
+          return configRules_.size();
         } else {
-          return deviceIdBuilder_.getMessage();
+          return configRulesBuilder_.getCount();
         }
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
+      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();
           }
-          deviceId_ = value;
+          ensureConfigRulesIsMutable();
+          configRules_.set(index, value);
           onChanged();
         } else {
-          deviceIdBuilder_.setMessage(value);
+          configRulesBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
+      public Builder setConfigRules(
+          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.set(index, builderForValue.build());
           onChanged();
         } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
+          configRulesBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
+      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
+        if (configRulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureConfigRulesIsMutable();
+          configRules_.add(value);
           onChanged();
         } else {
-          deviceIdBuilder_.mergeFrom(value);
+          configRulesBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
+      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 {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
+          configRulesBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
+      public Builder addConfigRules(
+          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.add(builderForValue.build());
+          onChanged();
         } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+          configRulesBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 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;
+      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 deviceIdBuilder_;
+        return this;
       }
-
-      private java.lang.Object name_ = "";
       /**
-       * <code>string name = 2;</code>
-       * @return The name.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      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;
+      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 {
-          return (java.lang.String) ref;
+          configRulesBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>string name = 2;</code>
-       * @return The bytes for name.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      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;
+      public Builder clearConfigRules() {
+        if (configRulesBuilder_ == null) {
+          configRules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          configRulesBuilder_.clear();
         }
-      }
-      /**
-       * <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;
-        onChanged();
         return this;
       }
       /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
+      public Builder removeConfigRules(int index) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.remove(index);
+          onChanged();
+        } else {
+          configRulesBuilder_.remove(index);
+        }
         return this;
       }
       /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
+          int index) {
+        return getConfigRulesFieldBuilder().getBuilder(index);
       }
-
-      private java.lang.Object deviceType_ = "";
       /**
-       * <code>string device_type = 3;</code>
-       * @return The deviceType.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      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;
+      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+          int index) {
+        if (configRulesBuilder_ == null) {
+          return configRules_.get(index);  } else {
+          return configRulesBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>string device_type = 3;</code>
-       * @return The bytes for deviceType.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      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;
+      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+           getConfigRulesOrBuilderList() {
+        if (configRulesBuilder_ != null) {
+          return configRulesBuilder_.getMessageOrBuilderList();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          return java.util.Collections.unmodifiableList(configRules_);
         }
       }
       /**
-       * <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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string device_type = 3;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder clearDeviceType() {
-        
-        deviceType_ = getDefaultInstance().getDeviceType();
-        onChanged();
-        return this;
+      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
+        return getConfigRulesFieldBuilder().addBuilder(
+            context.ContextOuterClass.ConfigRule.getDefaultInstance());
       }
       /**
-       * <code>string device_type = 3;</code>
-       * @param value The bytes for deviceType to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setDeviceTypeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        deviceType_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
+          int index) {
+        return getConfigRulesFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
       }
-
-      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.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public boolean hasDeviceConfig() {
-        return deviceConfigBuilder_ != null || deviceConfig_ != null;
+      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
+           getConfigRulesBuilderList() {
+        return getConfigRulesFieldBuilder().getBuilderList();
       }
-      /**
-       * <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();
+      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_;
       }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder setDeviceConfig(
-          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (deviceConfigBuilder_ == null) {
-          if (deviceConfig_ != null) {
-            deviceConfig_ =
-              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            deviceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          deviceConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder clearDeviceConfig() {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-          onChanged();
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @return The deviceOperationalStatus.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(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();
-        }
-        
-        deviceOperationalStatus_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeviceOperationalStatus() {
-        
-        deviceOperationalStatus_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> deviceDrivers_ =
-        java.util.Collections.emptyList();
-      private void ensureDeviceDriversIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
-          bitField0_ |= 0x00000001;
-        }
-      }
-      /**
-       * <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_ & ~0x00000001);
-        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 of the value to return.
-       * @return The enum numeric value on the wire of deviceDrivers at the given index.
-       * @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_ & 0x00000002) != 0)) {
-          deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      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_ & ~0x00000002);
-          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_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          deviceEndpoints_ = null;
-        }
-        return deviceEndpointsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.Component> component_ =
-        java.util.Collections.emptyList();
-      private void ensureComponentIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          component_ = new java.util.ArrayList<context.ContextOuterClass.Component>(component_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentBuilder_;
-
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Component> getComponentList() {
-        if (componentBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(component_);
-        } else {
-          return componentBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public int getComponentCount() {
-        if (componentBuilder_ == null) {
-          return component_.size();
-        } else {
-          return componentBuilder_.getCount();
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public context.ContextOuterClass.Component getComponent(int index) {
-        if (componentBuilder_ == null) {
-          return component_.get(index);
-        } else {
-          return componentBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder setComponent(
-          int index, context.ContextOuterClass.Component value) {
-        if (componentBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentIsMutable();
-          component_.set(index, value);
-          onChanged();
-        } else {
-          componentBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder setComponent(
-          int index, context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          componentBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder addComponent(context.ContextOuterClass.Component value) {
-        if (componentBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentIsMutable();
-          component_.add(value);
-          onChanged();
-        } else {
-          componentBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder addComponent(
-          int index, context.ContextOuterClass.Component value) {
-        if (componentBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentIsMutable();
-          component_.add(index, value);
-          onChanged();
-        } else {
-          componentBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder addComponent(
-          context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.add(builderForValue.build());
-          onChanged();
-        } else {
-          componentBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder addComponent(
-          int index, context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          componentBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder addAllComponent(
-          java.lang.Iterable<? extends context.ContextOuterClass.Component> values) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, component_);
-          onChanged();
-        } else {
-          componentBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder clearComponent() {
-        if (componentBuilder_ == null) {
-          component_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          componentBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public Builder removeComponent(int index) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.remove(index);
-          onChanged();
-        } else {
-          componentBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public context.ContextOuterClass.Component.Builder getComponentBuilder(
-          int index) {
-        return getComponentFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
-          int index) {
-        if (componentBuilder_ == null) {
-          return component_.get(index);  } else {
-          return componentBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-           getComponentOrBuilderList() {
-        if (componentBuilder_ != null) {
-          return componentBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(component_);
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public context.ContextOuterClass.Component.Builder addComponentBuilder() {
-        return getComponentFieldBuilder().addBuilder(
-            context.ContextOuterClass.Component.getDefaultInstance());
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public context.ContextOuterClass.Component.Builder addComponentBuilder(
-          int index) {
-        return getComponentFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Component.getDefaultInstance());
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component component = 8;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Component.Builder> 
-           getComponentBuilderList() {
-        return getComponentFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> 
-          getComponentFieldBuilder() {
-        if (componentBuilder_ == null) {
-          componentBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(
-                  component_,
-                  ((bitField0_ & 0x00000004) != 0),
-                  getParentForChildren(),
-                  isClean());
-          component_ = null;
-        }
-        return componentBuilder_;
-      }
-
-      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 controllerIdBuilder_ != null || controllerId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          controllerIdBuilder_.setMessage(value);
-        }
-
-        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();
-          onChanged();
-        } else {
-          controllerIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        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 (controllerId_ != null) {
-            controllerId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(controllerId_).mergeFrom(value).buildPartial();
-          } else {
-            controllerId_ = value;
-          }
-          onChanged();
-        } else {
-          controllerIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public Builder clearControllerId() {
-        if (controllerIdBuilder_ == null) {
-          controllerId_ = null;
-          onChanged();
-        } else {
-          controllerId_ = null;
-          controllerIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() {
-        
-        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 {
-        return new Device(input, extensionRegistry);
-      }
-    };
-
-    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>repeated string comp_string = 1;</code>
-     * @return A list containing the compString.
-     */
-    java.util.List<java.lang.String>
-        getCompStringList();
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return The count of compString.
-     */
-    int getCompStringCount();
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the element to return.
-     * @return The compString at the given index.
-     */
-    java.lang.String getCompString(int index);
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the value to return.
-     * @return The bytes of the compString at the given index.
-     */
-    com.google.protobuf.ByteString
-        getCompStringBytes(int index);
-  }
-  /**
-   * 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() {
-      compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Component();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Component(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      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();
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                compString_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              compString_.add(s);
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          compString_ = compString_.getUnmodifiableView();
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Component_descriptor;
-    }
-
-    @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 COMP_STRING_FIELD_NUMBER = 1;
-    private com.google.protobuf.LazyStringList compString_;
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return A list containing the compString.
-     */
-    public com.google.protobuf.ProtocolStringList
-        getCompStringList() {
-      return compString_;
-    }
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return The count of compString.
-     */
-    public int getCompStringCount() {
-      return compString_.size();
-    }
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the element to return.
-     * @return The compString at the given index.
-     */
-    public java.lang.String getCompString(int index) {
-      return compString_.get(index);
-    }
-    /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the value to return.
-     * @return The bytes of the compString at the given index.
-     */
-    public com.google.protobuf.ByteString
-        getCompStringBytes(int index) {
-      return compString_.getByteString(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 < compString_.size(); i++) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, compString_.getRaw(i));
-      }
-      unknownFields.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 < compString_.size(); i++) {
-          dataSize += computeStringSizeNoTag(compString_.getRaw(i));
-        }
-        size += dataSize;
-        size += 1 * getCompStringList().size();
-      }
-      size += unknownFields.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 (!getCompStringList()
-          .equals(other.getCompStringList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getCompStringCount() > 0) {
-        hash = (37 * hash) + COMP_STRING_FIELD_NUMBER;
-        hash = (53 * hash) + getCompStringList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.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;
-    }
-    /**
-     * 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;
-      }
-
-      @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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        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);
-        int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          compString_ = compString_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.compString_ = compString_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.compString_.isEmpty()) {
-          if (compString_.isEmpty()) {
-            compString_ = other.compString_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureCompStringIsMutable();
-            compString_.addAll(other.compString_);
-          }
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        context.ContextOuterClass.Component parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private com.google.protobuf.LazyStringList compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureCompStringIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          compString_ = new com.google.protobuf.LazyStringArrayList(compString_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @return A list containing the compString.
-       */
-      public com.google.protobuf.ProtocolStringList
-          getCompStringList() {
-        return compString_.getUnmodifiableView();
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @return The count of compString.
-       */
-      public int getCompStringCount() {
-        return compString_.size();
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param index The index of the element to return.
-       * @return The compString at the given index.
-       */
-      public java.lang.String getCompString(int index) {
-        return compString_.get(index);
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param index The index of the value to return.
-       * @return The bytes of the compString at the given index.
-       */
-      public com.google.protobuf.ByteString
-          getCompStringBytes(int index) {
-        return compString_.getByteString(index);
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param index The index to set the value at.
-       * @param value The compString to set.
-       * @return This builder for chaining.
-       */
-      public Builder setCompString(
-          int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureCompStringIsMutable();
-        compString_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param value The compString to add.
-       * @return This builder for chaining.
-       */
-      public Builder addCompString(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureCompStringIsMutable();
-        compString_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param values The compString to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllCompString(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureCompStringIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, compString_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearCompString() {
-        compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param value The bytes of the compString to add.
-       * @return This builder for chaining.
-       */
-      public Builder addCompStringBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        ensureCompStringIsMutable();
-        compString_.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.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 {
-        return new Component(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceConfig(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              configRules_.add(
-                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          configRules_ = java.util.Collections.unmodifiableList(configRules_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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;
-    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));
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConfigRulesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          configRulesBuilder_.clear();
-        }
-        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);
-        int from_bitField0_ = bitField0_;
-        if (configRulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            configRules_ = java.util.Collections.unmodifiableList(configRules_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.configRules_ = configRules_;
-        } else {
-          result.configRules_ = configRulesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.DeviceConfig parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 {
-        return new DeviceConfig(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              deviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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;
-    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));
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDeviceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        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);
-        int from_bitField0_ = bitField0_;
-        if (deviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.DeviceIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 {
-        return new DeviceIdList(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              devices_.add(
-                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          devices_ = java.util.Collections.unmodifiableList(devices_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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;
-    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));
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDevicesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          devicesBuilder_.clear();
-        }
-        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);
-        int from_bitField0_ = bitField0_;
-        if (devicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            devices_ = java.util.Collections.unmodifiableList(devices_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.devices_ = devices_;
-        } else {
-          result.devices_ = devicesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.DeviceList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 {
-        return new DeviceList(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceFilter(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.DeviceIdList.Builder subBuilder = null;
-              if (deviceIds_ != null) {
-                subBuilder = deviceIds_.toBuilder();
-              }
-              deviceIds_ = input.readMessage(context.ContextOuterClass.DeviceIdList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceIds_);
-                deviceIds_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              includeEndpoints_ = input.readBool();
-              break;
-            }
-            case 24: {
-
-              includeConfigRules_ = input.readBool();
-              break;
-            }
-            case 32: {
-
-              includeComponents_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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 getDeviceIds();
-    }
-
-    public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
-    private boolean includeEndpoints_;
-    /**
-     * <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_;
-    /**
-     * <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_;
-    /**
-     * <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_);
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = null;
-        } else {
-          deviceIds_ = null;
-          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 (deviceIdsBuilder_ == null) {
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        result.includeEndpoints_ = includeEndpoints_;
-        result.includeConfigRules_ = includeConfigRules_;
-        result.includeComponents_ = includeComponents_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.DeviceFilter parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceFilter) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      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 deviceIdsBuilder_ != null || deviceIds_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder setDeviceIds(
-          context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
-        if (deviceIdsBuilder_ == null) {
-          if (deviceIds_ != null) {
-            deviceIds_ =
-              context.ContextOuterClass.DeviceIdList.newBuilder(deviceIds_).mergeFrom(value).buildPartial();
-          } else {
-            deviceIds_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdsBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder clearDeviceIds() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = null;
-          onChanged();
-        } else {
-          deviceIds_ = null;
-          deviceIdsBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_endpoints = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeEndpoints() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_config_rules = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConfigRules() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_components = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeComponents() {
-        
-        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 {
-        return new DeviceFilter(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-              if (deviceConfig_ != null) {
-                subBuilder = deviceConfig_.toBuilder();
-              }
-              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceConfig_);
-                deviceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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 getEvent();
-    }
-
-    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 getDeviceId();
-    }
-
-    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 getDeviceConfig();
-    }
-
-    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());
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-        } else {
-          deviceConfig_ = null;
-          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 (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (deviceConfigBuilder_ == null) {
-          result.deviceConfig_ = deviceConfig_;
-        } else {
-          result.deviceConfig_ = deviceConfigBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.DeviceEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      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 eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        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 deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        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 deviceConfigBuilder_ != null || deviceConfig_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder setDeviceConfig(
-          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (deviceConfigBuilder_ == null) {
-          if (deviceConfig_ != null) {
-            deviceConfig_ =
-              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            deviceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          deviceConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder clearDeviceConfig() {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-          onChanged();
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-        
-        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 {
-        return new DeviceEvent(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (linkUuid_ != null) {
-                subBuilder = linkUuid_.toBuilder();
-              }
-              linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkUuid_);
-                linkUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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 getLinkUuid();
-    }
-
-    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());
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linkUuidBuilder_ == null) {
-          linkUuid_ = null;
-        } else {
-          linkUuid_ = null;
-          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 (linkUuidBuilder_ == null) {
-          result.linkUuid_ = linkUuid_;
-        } else {
-          result.linkUuid_ = linkUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.LinkId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      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 linkUuidBuilder_ != null || linkUuid_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          linkUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder setLinkUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (linkUuidBuilder_ == null) {
-          linkUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          linkUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
-        if (linkUuidBuilder_ == null) {
-          if (linkUuid_ != null) {
-            linkUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
-          } else {
-            linkUuid_ = value;
-          }
-          onChanged();
-        } else {
-          linkUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder clearLinkUuid() {
-        if (linkUuidBuilder_ == null) {
-          linkUuid_ = null;
-          onChanged();
-        } else {
-          linkUuid_ = null;
-          linkUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
-        
-        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 {
-        return new LinkId(input, extensionRegistry);
-      }
-    };
-
-    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 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>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getLinkEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    int getLinkEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getLinkEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
-        int index);
-  }
-  /**
-   * 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_ = "";
-      linkEndpointIds_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Link();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Link(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.LinkId.Builder subBuilder = null;
-              if (linkId_ != null) {
-                subBuilder = linkId_.toBuilder();
-              }
-              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkId_);
-                linkId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              linkEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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 getLinkId();
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    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_ENDPOINT_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
-      return linkEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getLinkEndpointIdsOrBuilderList() {
-      return linkEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getLinkEndpointIdsCount() {
-      return linkEndpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
-      return linkEndpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</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 (linkId_ != null) {
-        output.writeMessage(1, getLinkId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      for (int i = 0; i < linkEndpointIds_.size(); i++) {
-        output.writeMessage(3, linkEndpointIds_.get(i));
-      }
-      unknownFields.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 (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      for (int i = 0; i < linkEndpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, linkEndpointIds_.get(i));
-      }
-      size += unknownFields.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 (!getLinkEndpointIdsList()
-          .equals(other.getLinkEndpointIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) 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();
-      if (getLinkEndpointIdsCount() > 0) {
-        hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getLinkEndpointIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (linkEndpointIdsBuilder_ == null) {
-          linkEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          linkEndpointIdsBuilder_.clear();
-        }
-        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);
-        int from_bitField0_ = bitField0_;
-        if (linkIdBuilder_ == null) {
-          result.linkId_ = linkId_;
-        } else {
-          result.linkId_ = linkIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (linkEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.linkEndpointIds_ = linkEndpointIds_;
-        } else {
-          result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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_;
-          onChanged();
-        }
-        if (linkEndpointIdsBuilder_ == null) {
-          if (!other.linkEndpointIds_.isEmpty()) {
-            if (linkEndpointIds_.isEmpty()) {
-              linkEndpointIds_ = other.linkEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureLinkEndpointIdsIsMutable();
-              linkEndpointIds_.addAll(other.linkEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.linkEndpointIds_.isEmpty()) {
-            if (linkEndpointIdsBuilder_.isEmpty()) {
-              linkEndpointIdsBuilder_.dispose();
-              linkEndpointIdsBuilder_ = null;
-              linkEndpointIds_ = other.linkEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              linkEndpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinkEndpointIdsFieldBuilder() : null;
-            } else {
-              linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        context.ContextOuterClass.Link parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 linkIdBuilder_ != null || linkId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder setLinkId(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdBuilder_ == null) {
-          linkId_ = builderForValue.build();
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (linkId_ != null) {
-            linkId_ =
-              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
-          } else {
-            linkId_ = value;
-          }
-          onChanged();
-        } else {
-          linkIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder clearLinkId() {
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-          onChanged();
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        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;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureLinkEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</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 = 3;</code>
-       */
-      public int getLinkEndpointIdsCount() {
-        if (linkEndpointIdsBuilder_ == null) {
-          return linkEndpointIds_.size();
-        } else {
-          return linkEndpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</code>
-       */
-      public Builder clearLinkEndpointIds() {
-        if (linkEndpointIdsBuilder_ == null) {
-          linkEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</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 = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(
-          int index) {
-        return getLinkEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</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 = 3;</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 = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
-        return getLinkEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(
-          int index) {
-        return getLinkEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</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_ & 0x00000001) != 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.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 {
-        return new Link(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              linkIds_.add(
-                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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;
-    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));
-      }
-      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getLinkIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        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);
-        int from_bitField0_ = bitField0_;
-        if (linkIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.linkIds_ = linkIds_;
-        } else {
-          result.linkIds_ = linkIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.LinkIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
       }
 
       @java.lang.Override
@@ -25439,95 +15690,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.LinkIdList)
+      // @@protoc_insertion_point(builder_scope:context.DeviceConfig)
     }
 
-    // @@protoc_insertion_point(class_scope:context.LinkIdList)
-    private static final context.ContextOuterClass.LinkIdList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.DeviceConfig)
+    private static final context.ContextOuterClass.DeviceConfig DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkIdList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceConfig();
     }
 
-    public static context.ContextOuterClass.LinkIdList getDefaultInstance() {
+    public static context.ContextOuterClass.DeviceConfig getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<LinkIdList>
-        PARSER = new com.google.protobuf.AbstractParser<LinkIdList>() {
+    private static final com.google.protobuf.Parser<DeviceConfig>
+        PARSER = new com.google.protobuf.AbstractParser<DeviceConfig>() {
       @java.lang.Override
-      public LinkIdList parsePartialFrom(
+      public DeviceConfig parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkIdList(input, extensionRegistry);
+        return new DeviceConfig(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<LinkIdList> parser() {
+    public static com.google.protobuf.Parser<DeviceConfig> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<LinkIdList> getParserForType() {
+    public com.google.protobuf.Parser<DeviceConfig> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
+    public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface LinkListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkList)
+  public interface DeviceIdListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.DeviceIdList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
-    java.util.List<context.ContextOuterClass.Link> 
-        getLinksList();
+    java.util.List<context.ContextOuterClass.DeviceId> 
+        getDeviceIdsList();
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
-    context.ContextOuterClass.Link getLinks(int index);
+    context.ContextOuterClass.DeviceId getDeviceIds(int index);
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
-    int getLinksCount();
+    int getDeviceIdsCount();
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
-    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList();
+    java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
+        getDeviceIdsOrBuilderList();
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
-    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
+    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code context.LinkList}
+   * Protobuf type {@code context.DeviceIdList}
    */
-  public static final class LinkList extends
+  public static final class DeviceIdList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkList)
-      LinkListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.DeviceIdList)
+      DeviceIdListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use LinkList.newBuilder() to construct.
-    private LinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use DeviceIdList.newBuilder() to construct.
+    private DeviceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private LinkList() {
-      links_ = java.util.Collections.emptyList();
+    private DeviceIdList() {
+      deviceIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new LinkList();
+      return new DeviceIdList();
     }
 
     @java.lang.Override
@@ -25535,7 +15786,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private LinkList(
+    private DeviceIdList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -25556,11 +15807,11 @@ public final class ContextOuterClass {
               break;
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
+                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              links_.add(
-                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
+              deviceIds_.add(
+                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -25579,7 +15830,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          links_ = java.util.Collections.unmodifiableList(links_);
+          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -25587,55 +15838,55 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
+      return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
+              context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
     }
 
-    public static final int LINKS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Link> links_;
+    public static final int DEVICE_IDS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-      return links_;
+    public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+      return deviceIds_;
     }
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList() {
-      return links_;
+    public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
+        getDeviceIdsOrBuilderList() {
+      return deviceIds_;
     }
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
     @java.lang.Override
-    public int getLinksCount() {
-      return links_.size();
+    public int getDeviceIdsCount() {
+      return deviceIds_.size();
     }
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Link getLinks(int index) {
-      return links_.get(index);
+    public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+      return deviceIds_.get(index);
     }
     /**
-     * <code>repeated .context.Link links = 1;</code>
+     * <code>repeated .context.DeviceId device_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
+    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
         int index) {
-      return links_.get(index);
+      return deviceIds_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -25652,8 +15903,8 @@ public final class ContextOuterClass {
     @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));
+      for (int i = 0; i < deviceIds_.size(); i++) {
+        output.writeMessage(1, deviceIds_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -25664,9 +15915,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < links_.size(); i++) {
+      for (int i = 0; i < deviceIds_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, links_.get(i));
+          .computeMessageSize(1, deviceIds_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -25678,13 +15929,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.LinkList)) {
+      if (!(obj instanceof context.ContextOuterClass.DeviceIdList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
+      context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
 
-      if (!getLinksList()
-          .equals(other.getLinksList())) return false;
+      if (!getDeviceIdsList()
+          .equals(other.getDeviceIdsList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -25696,78 +15947,78 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getLinksCount() > 0) {
-        hash = (37 * hash) + LINKS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinksList().hashCode();
+      if (getDeviceIdsCount() > 0) {
+        hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
+        hash = (53 * hash) + getDeviceIdsList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.LinkList parseFrom(
+    public static context.ContextOuterClass.DeviceIdList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.LinkList parseFrom(
+    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.LinkList parseFrom(
+    public static context.ContextOuterClass.DeviceIdList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.LinkList parseFrom(
+    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.LinkList parseFrom(byte[] data)
+    public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.LinkList parseFrom(
+    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.LinkList parseFrom(java.io.InputStream input)
+    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.LinkList parseFrom(
+    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.LinkList parseDelimitedFrom(java.io.InputStream input)
+    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.LinkList parseDelimitedFrom(
+    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.LinkList parseFrom(
+    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.LinkList parseFrom(
+    public static context.ContextOuterClass.DeviceIdList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -25780,7 +16031,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.LinkList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.DeviceIdList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -25796,26 +16047,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.LinkList}
+     * Protobuf type {@code context.DeviceIdList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkList)
-        context.ContextOuterClass.LinkListOrBuilder {
+        // @@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_LinkList_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
+                context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.LinkList.newBuilder()
+      // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -25828,17 +16079,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getLinksFieldBuilder();
+          getDeviceIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
+        if (deviceIdsBuilder_ == null) {
+          deviceIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          linksBuilder_.clear();
+          deviceIdsBuilder_.clear();
         }
         return this;
       }
@@ -25846,17 +16097,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkList.getDefaultInstance();
+      public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
+        return context.ContextOuterClass.DeviceIdList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.LinkList build() {
-        context.ContextOuterClass.LinkList result = buildPartial();
+      public context.ContextOuterClass.DeviceIdList build() {
+        context.ContextOuterClass.DeviceIdList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -25864,17 +16115,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.LinkList buildPartial() {
-        context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
+      public context.ContextOuterClass.DeviceIdList buildPartial() {
+        context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
         int from_bitField0_ = bitField0_;
-        if (linksBuilder_ == null) {
+        if (deviceIdsBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            links_ = java.util.Collections.unmodifiableList(links_);
+            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.links_ = links_;
+          result.deviceIds_ = deviceIds_;
         } else {
-          result.links_ = linksBuilder_.build();
+          result.deviceIds_ = deviceIdsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -25914,39 +16165,39 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkList) {
-          return mergeFrom((context.ContextOuterClass.LinkList)other);
+        if (other instanceof context.ContextOuterClass.DeviceIdList) {
+          return mergeFrom((context.ContextOuterClass.DeviceIdList)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_;
+      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 {
-              ensureLinksIsMutable();
-              links_.addAll(other.links_);
+              ensureDeviceIdsIsMutable();
+              deviceIds_.addAll(other.deviceIds_);
             }
             onChanged();
           }
         } else {
-          if (!other.links_.isEmpty()) {
-            if (linksBuilder_.isEmpty()) {
-              linksBuilder_.dispose();
-              linksBuilder_ = null;
-              links_ = other.links_;
+          if (!other.deviceIds_.isEmpty()) {
+            if (deviceIdsBuilder_.isEmpty()) {
+              deviceIdsBuilder_.dispose();
+              deviceIdsBuilder_ = null;
+              deviceIds_ = other.deviceIds_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              linksBuilder_ = 
+              deviceIdsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinksFieldBuilder() : null;
+                   getDeviceIdsFieldBuilder() : null;
             } else {
-              linksBuilder_.addAllMessages(other.links_);
+              deviceIdsBuilder_.addAllMessages(other.deviceIds_);
             }
           }
         }
@@ -25965,11 +16216,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.LinkList parsedMessage = null;
+        context.ContextOuterClass.DeviceIdList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -25980,244 +16231,244 @@ public final class ContextOuterClass {
       }
       private int bitField0_;
 
-      private java.util.List<context.ContextOuterClass.Link> links_ =
+      private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
         java.util.Collections.emptyList();
-      private void ensureLinksIsMutable() {
+      private void ensureDeviceIdsIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
+          deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;
+          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
 
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-        if (linksBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(links_);
+      public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+        if (deviceIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(deviceIds_);
         } else {
-          return linksBuilder_.getMessageList();
+          return deviceIdsBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public int getLinksCount() {
-        if (linksBuilder_ == null) {
-          return links_.size();
+      public int getDeviceIdsCount() {
+        if (deviceIdsBuilder_ == null) {
+          return deviceIds_.size();
         } else {
-          return linksBuilder_.getCount();
+          return deviceIdsBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public context.ContextOuterClass.Link getLinks(int index) {
-        if (linksBuilder_ == null) {
-          return links_.get(index);
+      public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+        if (deviceIdsBuilder_ == null) {
+          return deviceIds_.get(index);
         } else {
-          return linksBuilder_.getMessage(index);
+          return deviceIdsBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder setLinks(
-          int index, context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
+      public Builder setDeviceIds(
+          int index, context.ContextOuterClass.DeviceId value) {
+        if (deviceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureLinksIsMutable();
-          links_.set(index, value);
+          ensureDeviceIdsIsMutable();
+          deviceIds_.set(index, value);
           onChanged();
         } else {
-          linksBuilder_.setMessage(index, value);
+          deviceIdsBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder setLinks(
-          int index, context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.set(index, builderForValue.build());
+      public Builder setDeviceIds(
+          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdsBuilder_ == null) {
+          ensureDeviceIdsIsMutable();
+          deviceIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          linksBuilder_.setMessage(index, builderForValue.build());
+          deviceIdsBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder addLinks(context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
+      public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureLinksIsMutable();
-          links_.add(value);
+          ensureDeviceIdsIsMutable();
+          deviceIds_.add(value);
           onChanged();
         } else {
-          linksBuilder_.addMessage(value);
+          deviceIdsBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder addLinks(
-          int index, context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
+      public Builder addDeviceIds(
+          int index, context.ContextOuterClass.DeviceId value) {
+        if (deviceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureLinksIsMutable();
-          links_.add(index, value);
+          ensureDeviceIdsIsMutable();
+          deviceIds_.add(index, value);
           onChanged();
         } else {
-          linksBuilder_.addMessage(index, value);
+          deviceIdsBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder addLinks(
-          context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.add(builderForValue.build());
+      public Builder addDeviceIds(
+          context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdsBuilder_ == null) {
+          ensureDeviceIdsIsMutable();
+          deviceIds_.add(builderForValue.build());
           onChanged();
         } else {
-          linksBuilder_.addMessage(builderForValue.build());
+          deviceIdsBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder addLinks(
-          int index, context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.add(index, builderForValue.build());
+      public Builder addDeviceIds(
+          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdsBuilder_ == null) {
+          ensureDeviceIdsIsMutable();
+          deviceIds_.add(index, builderForValue.build());
           onChanged();
         } else {
-          linksBuilder_.addMessage(index, builderForValue.build());
+          deviceIdsBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder addAllLinks(
-          java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
+      public Builder addAllDeviceIds(
+          java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
+        if (deviceIdsBuilder_ == null) {
+          ensureDeviceIdsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, links_);
+              values, deviceIds_);
           onChanged();
         } else {
-          linksBuilder_.addAllMessages(values);
+          deviceIdsBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder clearLinks() {
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
+      public Builder clearDeviceIds() {
+        if (deviceIdsBuilder_ == null) {
+          deviceIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          linksBuilder_.clear();
+          deviceIdsBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public Builder removeLinks(int index) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.remove(index);
+      public Builder removeDeviceIds(int index) {
+        if (deviceIdsBuilder_ == null) {
+          ensureDeviceIdsIsMutable();
+          deviceIds_.remove(index);
           onChanged();
         } else {
-          linksBuilder_.remove(index);
+          deviceIdsBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public context.ContextOuterClass.Link.Builder getLinksBuilder(
+      public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(
           int index) {
-        return getLinksFieldBuilder().getBuilder(index);
+        return getDeviceIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
+      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
           int index) {
-        if (linksBuilder_ == null) {
-          return links_.get(index);  } else {
-          return linksBuilder_.getMessageOrBuilder(index);
+        if (deviceIdsBuilder_ == null) {
+          return deviceIds_.get(index);  } else {
+          return deviceIdsBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-           getLinksOrBuilderList() {
-        if (linksBuilder_ != null) {
-          return linksBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
+           getDeviceIdsOrBuilderList() {
+        if (deviceIdsBuilder_ != null) {
+          return deviceIdsBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(links_);
+          return java.util.Collections.unmodifiableList(deviceIds_);
         }
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public context.ContextOuterClass.Link.Builder addLinksBuilder() {
-        return getLinksFieldBuilder().addBuilder(
-            context.ContextOuterClass.Link.getDefaultInstance());
+      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
+        return getDeviceIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.DeviceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public context.ContextOuterClass.Link.Builder addLinksBuilder(
+      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
           int index) {
-        return getLinksFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Link.getDefaultInstance());
+        return getDeviceIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.DeviceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.Link links = 1;</code>
+       * <code>repeated .context.DeviceId device_ids = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.Link.Builder> 
-           getLinksBuilderList() {
-        return getLinksFieldBuilder().getBuilderList();
+      public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
+           getDeviceIdsBuilderList() {
+        return getDeviceIdsFieldBuilder().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_,
+          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());
-          links_ = null;
+          deviceIds_ = null;
         }
-        return linksBuilder_;
+        return deviceIdsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -26232,100 +16483,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.LinkList)
+      // @@protoc_insertion_point(builder_scope:context.DeviceIdList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.LinkList)
-    private static final context.ContextOuterClass.LinkList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.DeviceIdList)
+    private static final context.ContextOuterClass.DeviceIdList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceIdList();
     }
 
-    public static context.ContextOuterClass.LinkList getDefaultInstance() {
+    public static context.ContextOuterClass.DeviceIdList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<LinkList>
-        PARSER = new com.google.protobuf.AbstractParser<LinkList>() {
+    private static final com.google.protobuf.Parser<DeviceIdList>
+        PARSER = new com.google.protobuf.AbstractParser<DeviceIdList>() {
       @java.lang.Override
-      public LinkList parsePartialFrom(
+      public DeviceIdList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkList(input, extensionRegistry);
+        return new DeviceIdList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<LinkList> parser() {
+    public static com.google.protobuf.Parser<DeviceIdList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<LinkList> getParserForType() {
+    public com.google.protobuf.Parser<DeviceIdList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
+    public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface LinkEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkEvent)
+  public interface DeviceListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.DeviceList)
       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.
+     * <code>repeated .context.Device devices = 1;</code>
      */
-    context.ContextOuterClass.Event getEvent();
+    java.util.List<context.ContextOuterClass.Device> 
+        getDevicesList();
     /**
-     * <code>.context.Event event = 1;</code>
+     * <code>repeated .context.Device devices = 1;</code>
      */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
-
+    context.ContextOuterClass.Device getDevices(int index);
     /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return Whether the linkId field is set.
+     * <code>repeated .context.Device devices = 1;</code>
      */
-    boolean hasLinkId();
+    int getDevicesCount();
     /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return The linkId.
+     * <code>repeated .context.Device devices = 1;</code>
      */
-    context.ContextOuterClass.LinkId getLinkId();
+    java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
+        getDevicesOrBuilderList();
     /**
-     * <code>.context.LinkId link_id = 2;</code>
+     * <code>repeated .context.Device devices = 1;</code>
      */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
+    context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
+        int index);
   }
   /**
-   * Protobuf type {@code context.LinkEvent}
+   * Protobuf type {@code context.DeviceList}
    */
-  public static final class LinkEvent extends
+  public static final class DeviceList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkEvent)
-      LinkEventOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.DeviceList)
+      DeviceListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use LinkEvent.newBuilder() to construct.
-    private LinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use DeviceList.newBuilder() to construct.
+    private DeviceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private LinkEvent() {
+    private DeviceList() {
+      devices_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new LinkEvent();
+      return new DeviceList();
     }
 
     @java.lang.Override
@@ -26333,7 +16579,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private LinkEvent(
+    private DeviceList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -26341,6 +16587,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -26352,29 +16599,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.LinkId.Builder subBuilder = null;
-              if (linkId_ != null) {
-                subBuilder = linkId_.toBuilder();
-              }
-              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkId_);
-                linkId_ = subBuilder.buildPartial();
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
+                mutable_bitField0_ |= 0x00000001;
               }
-
+              devices_.add(
+                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -26392,73 +16622,64 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          devices_ = java.util.Collections.unmodifiableList(devices_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
+      return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
+              context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.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;
-    }
+    public static final int DEVICES_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.Device> devices_;
     /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
+     * <code>repeated .context.Device devices = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+    public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
+      return devices_;
     }
     /**
-     * <code>.context.Event event = 1;</code>
+     * <code>repeated .context.Device devices = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
+    public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
+        getDevicesOrBuilderList() {
+      return devices_;
     }
-
-    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.
+     * <code>repeated .context.Device devices = 1;</code>
      */
     @java.lang.Override
-    public boolean hasLinkId() {
-      return linkId_ != null;
+    public int getDevicesCount() {
+      return devices_.size();
     }
     /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return The linkId.
+     * <code>repeated .context.Device devices = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkId() {
-      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+    public context.ContextOuterClass.Device getDevices(int index) {
+      return devices_.get(index);
     }
     /**
-     * <code>.context.LinkId link_id = 2;</code>
+     * <code>repeated .context.Device devices = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-      return getLinkId();
+    public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
+        int index) {
+      return devices_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -26475,11 +16696,8 @@ public final class ContextOuterClass {
     @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());
+      for (int i = 0; i < devices_.size(); i++) {
+        output.writeMessage(1, devices_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -26490,13 +16708,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (linkId_ != null) {
+      for (int i = 0; i < devices_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getLinkId());
+          .computeMessageSize(1, devices_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -26508,21 +16722,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.LinkEvent)) {
+      if (!(obj instanceof context.ContextOuterClass.DeviceList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.LinkEvent other = (context.ContextOuterClass.LinkEvent) obj;
+      context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) 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 (!getDevicesList()
+          .equals(other.getDevicesList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -26534,82 +16740,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (getDevicesCount() > 0) {
+        hash = (37 * hash) + DEVICES_FIELD_NUMBER;
+        hash = (53 * hash) + getDevicesList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.LinkEvent parseFrom(
+    public static context.ContextOuterClass.DeviceList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
+    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.LinkEvent parseFrom(
+    public static context.ContextOuterClass.DeviceList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
+    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.LinkEvent parseFrom(byte[] data)
+    public static context.ContextOuterClass.DeviceList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
+    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.LinkEvent parseFrom(java.io.InputStream input)
+    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.LinkEvent parseFrom(
+    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.LinkEvent parseDelimitedFrom(java.io.InputStream input)
+    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.LinkEvent parseDelimitedFrom(
+    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.LinkEvent parseFrom(
+    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.LinkEvent parseFrom(
+    public static context.ContextOuterClass.DeviceList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -26622,7 +16824,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.LinkEvent prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.DeviceList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -26638,26 +16840,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.LinkEvent}
+     * Protobuf type {@code context.DeviceList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkEvent)
-        context.ContextOuterClass.LinkEventOrBuilder {
+        // @@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_LinkEvent_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
+                context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
+      // Construct using context.ContextOuterClass.DeviceList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -26670,22 +16872,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getDevicesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
+        if (devicesBuilder_ == null) {
+          devices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
+          devicesBuilder_.clear();
         }
         return this;
       }
@@ -26693,17 +16890,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkEvent.getDefaultInstance();
+      public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
+        return context.ContextOuterClass.DeviceList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.LinkEvent build() {
-        context.ContextOuterClass.LinkEvent result = buildPartial();
+      public context.ContextOuterClass.DeviceList build() {
+        context.ContextOuterClass.DeviceList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -26711,17 +16908,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.LinkEvent buildPartial() {
-        context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (linkIdBuilder_ == null) {
-          result.linkId_ = linkId_;
+      public context.ContextOuterClass.DeviceList buildPartial() {
+        context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
+        int from_bitField0_ = bitField0_;
+        if (devicesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            devices_ = java.util.Collections.unmodifiableList(devices_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.devices_ = devices_;
         } else {
-          result.linkId_ = linkIdBuilder_.build();
+          result.devices_ = devicesBuilder_.build();
         }
         onBuilt();
         return result;
@@ -26761,21 +16958,41 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkEvent) {
-          return mergeFrom((context.ContextOuterClass.LinkEvent)other);
+        if (other instanceof context.ContextOuterClass.DeviceList) {
+          return mergeFrom((context.ContextOuterClass.DeviceList)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());
+      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.unknownFields);
         onChanged();
@@ -26792,11 +17009,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.LinkEvent parsedMessage = null;
+        context.ContextOuterClass.DeviceList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -26805,243 +17022,246 @@ public final class ContextOuterClass {
         }
         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_;
 
-      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.
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
+      public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
+        if (devicesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(devices_);
+        } else {
+          return devicesBuilder_.getMessageList();
+        }
       }
       /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+      public int getDevicesCount() {
+        if (devicesBuilder_ == null) {
+          return devices_.size();
         } else {
-          return eventBuilder_.getMessage();
+          return devicesBuilder_.getCount();
         }
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
+      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();
           }
-          event_ = value;
+          ensureDevicesIsMutable();
+          devices_.set(index, value);
           onChanged();
         } else {
-          eventBuilder_.setMessage(value);
+          devicesBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
+      public Builder setDevices(
+          int index, context.ContextOuterClass.Device.Builder builderForValue) {
+        if (devicesBuilder_ == null) {
+          ensureDevicesIsMutable();
+          devices_.set(index, builderForValue.build());
           onChanged();
         } else {
-          eventBuilder_.setMessage(builderForValue.build());
+          devicesBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
+      public Builder addDevices(context.ContextOuterClass.Device value) {
+        if (devicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureDevicesIsMutable();
+          devices_.add(value);
           onChanged();
         } else {
-          eventBuilder_.mergeFrom(value);
+          devicesBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
+      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 {
-          event_ = null;
-          eventBuilder_ = null;
+          devicesBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
+      public Builder addDevices(
+          context.ContextOuterClass.Device.Builder builderForValue) {
+        if (devicesBuilder_ == null) {
+          ensureDevicesIsMutable();
+          devices_.add(builderForValue.build());
+          onChanged();
         } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
+          devicesBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.Device devices = 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;
+      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 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 linkIdBuilder_ != null || linkId_ != null;
+        return this;
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
-       * @return The linkId.
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public context.ContextOuterClass.LinkId getLinkId() {
-        if (linkIdBuilder_ == null) {
-          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+      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 {
-          return linkIdBuilder_.getMessage();
+          devicesBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          linkId_ = value;
+      public Builder clearDevices() {
+        if (devicesBuilder_ == null) {
+          devices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          linkIdBuilder_.setMessage(value);
+          devicesBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder setLinkId(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdBuilder_ == null) {
-          linkId_ = builderForValue.build();
+      public Builder removeDevices(int index) {
+        if (devicesBuilder_ == null) {
+          ensureDevicesIsMutable();
+          devices_.remove(index);
           onChanged();
         } else {
-          linkIdBuilder_.setMessage(builderForValue.build());
+          devicesBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (linkId_ != null) {
-            linkId_ =
-              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
-          } else {
-            linkId_ = value;
-          }
-          onChanged();
-        } else {
-          linkIdBuilder_.mergeFrom(value);
+      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);
         }
-
-        return this;
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public Builder clearLinkId() {
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-          onChanged();
+      public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
+           getDevicesOrBuilderList() {
+        if (devicesBuilder_ != null) {
+          return devicesBuilder_.getMessageOrBuilderList();
         } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
+          return java.util.Collections.unmodifiableList(devices_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-        
-        onChanged();
-        return getLinkIdFieldBuilder().getBuilder();
+      public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
+        return getDevicesFieldBuilder().addBuilder(
+            context.ContextOuterClass.Device.getDefaultInstance());
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 1;</code>
        */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-        if (linkIdBuilder_ != null) {
-          return linkIdBuilder_.getMessageOrBuilder();
-        } else {
-          return linkId_ == null ?
-              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        }
+      public context.ContextOuterClass.Device.Builder addDevicesBuilder(
+          int index) {
+        return getDevicesFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Device.getDefaultInstance());
       }
       /**
-       * <code>.context.LinkId link_id = 2;</code>
+       * <code>repeated .context.Device devices = 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(),
+      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());
-          linkId_ = null;
+          devices_ = null;
         }
-        return linkIdBuilder_;
+        return devicesBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -27056,104 +17276,115 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.LinkEvent)
+      // @@protoc_insertion_point(builder_scope:context.DeviceList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.LinkEvent)
-    private static final context.ContextOuterClass.LinkEvent DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.DeviceList)
+    private static final context.ContextOuterClass.DeviceList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkEvent();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceList();
     }
 
-    public static context.ContextOuterClass.LinkEvent getDefaultInstance() {
+    public static context.ContextOuterClass.DeviceList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<LinkEvent>
-        PARSER = new com.google.protobuf.AbstractParser<LinkEvent>() {
+    private static final com.google.protobuf.Parser<DeviceList>
+        PARSER = new com.google.protobuf.AbstractParser<DeviceList>() {
       @java.lang.Override
-      public LinkEvent parsePartialFrom(
+      public DeviceList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkEvent(input, extensionRegistry);
+        return new DeviceList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<LinkEvent> parser() {
+    public static com.google.protobuf.Parser<DeviceList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<LinkEvent> getParserForType() {
+    public com.google.protobuf.Parser<DeviceList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
+    public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceId)
+  public interface DeviceEventOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.DeviceEvent)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
-    boolean hasContextId();
+    boolean hasEvent();
     /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
-    context.ContextOuterClass.ContextId getContextId();
+    context.ContextOuterClass.Event getEvent();
     /**
-     * <code>.context.ContextId context_id = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
 
     /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return Whether the serviceUuid field is set.
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return Whether the deviceId field is set.
      */
-    boolean hasServiceUuid();
+    boolean hasDeviceId();
     /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return The serviceUuid.
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return The deviceId.
      */
-    context.ContextOuterClass.Uuid getServiceUuid();
+    context.ContextOuterClass.DeviceId getDeviceId();
     /**
-     * <code>.context.Uuid service_uuid = 2;</code>
+     * <code>.context.DeviceId device_id = 2;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder();
+    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();
   }
   /**
-   * <pre>
-   * ----- Service -------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.ServiceId}
+   * Protobuf type {@code context.DeviceEvent}
    */
-  public static final class ServiceId extends
+  public static final class DeviceEvent extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceId)
-      ServiceIdOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.DeviceEvent)
+      DeviceEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ServiceId.newBuilder() to construct.
-    private ServiceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use DeviceEvent.newBuilder() to construct.
+    private DeviceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ServiceId() {
+    private DeviceEvent() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ServiceId();
+      return new DeviceEvent();
     }
 
     @java.lang.Override
@@ -27161,7 +17392,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ServiceId(
+    private DeviceEvent(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -27180,27 +17411,40 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
+              context.ContextOuterClass.Event.Builder subBuilder = null;
+              if (event_ != null) {
+                subBuilder = event_.toBuilder();
               }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(event_);
+                event_ = subBuilder.buildPartial();
               }
 
               break;
             }
             case 18: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (serviceUuid_ != null) {
-                subBuilder = serviceUuid_.toBuilder();
+              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+              if (deviceId_ != null) {
+                subBuilder = deviceId_.toBuilder();
               }
-              serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceUuid_);
-                serviceUuid_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(deviceId_);
+                deviceId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 26: {
+              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+              if (deviceConfig_ != null) {
+                subBuilder = deviceConfig_.toBuilder();
+              }
+              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(deviceConfig_);
+                deviceConfig_ = subBuilder.buildPartial();
               }
 
               break;
@@ -27226,67 +17470,93 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
+      return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
+              context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
     }
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
+    public static final int EVENT_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Event event_;
     /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
     @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
+    public boolean hasEvent() {
+      return event_ != null;
     }
     /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+    public context.ContextOuterClass.Event getEvent() {
+      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
     /**
-     * <code>.context.ContextId context_id = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
+    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+      return getEvent();
     }
 
-    public static final int SERVICE_UUID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.Uuid serviceUuid_;
+    public static final int DEVICE_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.DeviceId deviceId_;
     /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return Whether the serviceUuid field is set.
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return Whether the deviceId field is set.
      */
     @java.lang.Override
-    public boolean hasServiceUuid() {
-      return serviceUuid_ != null;
+    public boolean hasDeviceId() {
+      return deviceId_ != null;
     }
     /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return The serviceUuid.
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return The deviceId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getServiceUuid() {
-      return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+    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 getDeviceId();
+    }
+
+    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.Uuid service_uuid = 2;</code>
+     * <code>.context.DeviceConfig device_config = 3;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-      return getServiceUuid();
+    public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
+      return getDeviceConfig();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -27303,11 +17573,14 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
+      if (event_ != null) {
+        output.writeMessage(1, getEvent());
       }
-      if (serviceUuid_ != null) {
-        output.writeMessage(2, getServiceUuid());
+      if (deviceId_ != null) {
+        output.writeMessage(2, getDeviceId());
+      }
+      if (deviceConfig_ != null) {
+        output.writeMessage(3, getDeviceConfig());
       }
       unknownFields.writeTo(output);
     }
@@ -27318,13 +17591,17 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (contextId_ != null) {
+      if (event_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
+          .computeMessageSize(1, getEvent());
       }
-      if (serviceUuid_ != null) {
+      if (deviceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getServiceUuid());
+          .computeMessageSize(2, getDeviceId());
+      }
+      if (deviceConfig_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, getDeviceConfig());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -27336,20 +17613,25 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ServiceId)) {
+      if (!(obj instanceof context.ContextOuterClass.DeviceEvent)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ServiceId other = (context.ContextOuterClass.ServiceId) obj;
+      context.ContextOuterClass.DeviceEvent other = (context.ContextOuterClass.DeviceEvent) obj;
 
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
+      if (hasEvent() != other.hasEvent()) return false;
+      if (hasEvent()) {
+        if (!getEvent()
+            .equals(other.getEvent())) return false;
       }
-      if (hasServiceUuid() != other.hasServiceUuid()) return false;
-      if (hasServiceUuid()) {
-        if (!getServiceUuid()
-            .equals(other.getServiceUuid())) 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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
@@ -27362,82 +17644,86 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
+      if (hasEvent()) {
+        hash = (37 * hash) + EVENT_FIELD_NUMBER;
+        hash = (53 * hash) + getEvent().hashCode();
       }
-      if (hasServiceUuid()) {
-        hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceUuid().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ServiceId parseFrom(
+    public static context.ContextOuterClass.DeviceEvent parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceId parseFrom(
+    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.ServiceId parseFrom(
+    public static context.ContextOuterClass.DeviceEvent parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceId parseFrom(
+    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.ServiceId parseFrom(byte[] data)
+    public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceId parseFrom(
+    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.ServiceId parseFrom(java.io.InputStream input)
+    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.ServiceId parseFrom(
+    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.ServiceId parseDelimitedFrom(java.io.InputStream input)
+    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.ServiceId parseDelimitedFrom(
+    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.ServiceId parseFrom(
+    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.ServiceId parseFrom(
+    public static context.ContextOuterClass.DeviceEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -27450,7 +17736,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceId prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.DeviceEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -27466,30 +17752,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * <pre>
-     * ----- Service -------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.ServiceId}
+     * Protobuf type {@code context.DeviceEvent}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceId)
-        context.ContextOuterClass.ServiceIdOrBuilder {
+        // @@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_ServiceId_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
+                context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ServiceId.newBuilder()
+      // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -27507,17 +17789,23 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
+        if (eventBuilder_ == null) {
+          event_ = null;
         } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
+          event_ = null;
+          eventBuilder_ = null;
         }
-        if (serviceUuidBuilder_ == null) {
-          serviceUuid_ = null;
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
         } else {
-          serviceUuid_ = null;
-          serviceUuidBuilder_ = null;
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
+        }
+        if (deviceConfigBuilder_ == null) {
+          deviceConfig_ = null;
+        } else {
+          deviceConfig_ = null;
+          deviceConfigBuilder_ = null;
         }
         return this;
       }
@@ -27525,17 +17813,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
+        return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceId.getDefaultInstance();
+      public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
+        return context.ContextOuterClass.DeviceEvent.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceId build() {
-        context.ContextOuterClass.ServiceId result = buildPartial();
+      public context.ContextOuterClass.DeviceEvent build() {
+        context.ContextOuterClass.DeviceEvent result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -27543,17 +17831,22 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceId buildPartial() {
-        context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
+      public context.ContextOuterClass.DeviceEvent buildPartial() {
+        context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
+        if (eventBuilder_ == null) {
+          result.event_ = event_;
         } else {
-          result.contextId_ = contextIdBuilder_.build();
+          result.event_ = eventBuilder_.build();
         }
-        if (serviceUuidBuilder_ == null) {
-          result.serviceUuid_ = serviceUuid_;
+        if (deviceIdBuilder_ == null) {
+          result.deviceId_ = deviceId_;
         } else {
-          result.serviceUuid_ = serviceUuidBuilder_.build();
+          result.deviceId_ = deviceIdBuilder_.build();
+        }
+        if (deviceConfigBuilder_ == null) {
+          result.deviceConfig_ = deviceConfig_;
+        } else {
+          result.deviceConfig_ = deviceConfigBuilder_.build();
         }
         onBuilt();
         return result;
@@ -27593,21 +17886,24 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceId) {
-          return mergeFrom((context.ContextOuterClass.ServiceId)other);
+        if (other instanceof context.ContextOuterClass.DeviceEvent) {
+          return mergeFrom((context.ContextOuterClass.DeviceEvent)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());
+      public Builder mergeFrom(context.ContextOuterClass.DeviceEvent other) {
+        if (other == context.ContextOuterClass.DeviceEvent.getDefaultInstance()) return this;
+        if (other.hasEvent()) {
+          mergeEvent(other.getEvent());
         }
-        if (other.hasServiceUuid()) {
-          mergeServiceUuid(other.getServiceUuid());
+        if (other.hasDeviceId()) {
+          mergeDeviceId(other.getDeviceId());
+        }
+        if (other.hasDeviceConfig()) {
+          mergeDeviceConfig(other.getDeviceConfig());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -27624,11 +17920,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ServiceId parsedMessage = null;
+        context.ContextOuterClass.DeviceEvent parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -27638,242 +17934,361 @@ public final class ContextOuterClass {
         return this;
       }
 
-      private context.ContextOuterClass.ContextId contextId_;
+      private context.ContextOuterClass.Event event_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
       /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
+       * <code>.context.Event event = 1;</code>
+       * @return Whether the event field is set.
        */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
+      public boolean hasEvent() {
+        return eventBuilder_ != null || event_ != null;
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
+       * <code>.context.Event event = 1;</code>
+       * @return The event.
        */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+      public context.ContextOuterClass.Event getEvent() {
+        if (eventBuilder_ == null) {
+          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         } else {
-          return contextIdBuilder_.getMessage();
+          return eventBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
+      public Builder setEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          contextId_ = value;
+          event_ = value;
           onChanged();
         } else {
-          contextIdBuilder_.setMessage(value);
+          eventBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
+      public Builder setEvent(
+          context.ContextOuterClass.Event.Builder builderForValue) {
+        if (eventBuilder_ == null) {
+          event_ = builderForValue.build();
           onChanged();
         } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
+          eventBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+      public Builder mergeEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (event_ != null) {
+            event_ =
+              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
           } else {
-            contextId_ = value;
+            event_ = value;
           }
           onChanged();
         } else {
-          contextIdBuilder_.mergeFrom(value);
+          eventBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
+      public Builder clearEvent() {
+        if (eventBuilder_ == null) {
+          event_ = null;
           onChanged();
         } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
+          event_ = null;
+          eventBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+      public context.ContextOuterClass.Event.Builder getEventBuilder() {
         
         onChanged();
-        return getContextIdFieldBuilder().getBuilder();
+        return getEventFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+        if (eventBuilder_ != null) {
+          return eventBuilder_.getMessageOrBuilder();
         } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+          return event_ == null ?
+              context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
       }
       /**
-       * <code>.context.ContextId context_id = 1;</code>
+       * <code>.context.Event event = 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(),
+          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());
-          contextId_ = null;
+          event_ = null;
         }
-        return contextIdBuilder_;
+        return eventBuilder_;
       }
 
-      private context.ContextOuterClass.Uuid serviceUuid_;
+      private context.ContextOuterClass.DeviceId deviceId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> serviceUuidBuilder_;
+          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       * @return Whether the serviceUuid field is set.
+       * <code>.context.DeviceId device_id = 2;</code>
+       * @return Whether the deviceId field is set.
        */
-      public boolean hasServiceUuid() {
-        return serviceUuidBuilder_ != null || serviceUuid_ != null;
+      public boolean hasDeviceId() {
+        return deviceIdBuilder_ != null || deviceId_ != null;
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       * @return The serviceUuid.
+       * <code>.context.DeviceId device_id = 2;</code>
+       * @return The deviceId.
        */
-      public context.ContextOuterClass.Uuid getServiceUuid() {
-        if (serviceUuidBuilder_ == null) {
-          return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+      public context.ContextOuterClass.DeviceId getDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         } else {
-          return serviceUuidBuilder_.getMessage();
+          return deviceIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder setServiceUuid(context.ContextOuterClass.Uuid value) {
-        if (serviceUuidBuilder_ == null) {
+      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          serviceUuid_ = value;
+          deviceId_ = value;
           onChanged();
         } else {
-          serviceUuidBuilder_.setMessage(value);
+          deviceIdBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder setServiceUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (serviceUuidBuilder_ == null) {
-          serviceUuid_ = builderForValue.build();
+      public Builder setDeviceId(
+          context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = builderForValue.build();
           onChanged();
         } else {
-          serviceUuidBuilder_.setMessage(builderForValue.build());
+          deviceIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
-        if (serviceUuidBuilder_ == null) {
-          if (serviceUuid_ != null) {
-            serviceUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
+      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
+          if (deviceId_ != null) {
+            deviceId_ =
+              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
           } else {
-            serviceUuid_ = value;
+            deviceId_ = value;
           }
           onChanged();
         } else {
-          serviceUuidBuilder_.mergeFrom(value);
+          deviceIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder clearServiceUuid() {
-        if (serviceUuidBuilder_ == null) {
-          serviceUuid_ = null;
+      public Builder clearDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
           onChanged();
         } else {
-          serviceUuid_ = null;
-          serviceUuidBuilder_ = null;
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
+      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
         
         onChanged();
-        return getServiceUuidFieldBuilder().getBuilder();
+        return getDeviceIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-        if (serviceUuidBuilder_ != null) {
-          return serviceUuidBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+        if (deviceIdBuilder_ != null) {
+          return deviceIdBuilder_.getMessageOrBuilder();
         } else {
-          return serviceUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+          return deviceId_ == null ?
+              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
       }
       /**
-       * <code>.context.Uuid service_uuid = 2;</code>
+       * <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 deviceConfigBuilder_ != null || deviceConfig_ != null;
+      }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          deviceConfigBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public Builder setDeviceConfig(
+          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
+        if (deviceConfigBuilder_ == null) {
+          deviceConfig_ = builderForValue.build();
+          onChanged();
+        } else {
+          deviceConfigBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
+        if (deviceConfigBuilder_ == null) {
+          if (deviceConfig_ != null) {
+            deviceConfig_ =
+              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
+          } else {
+            deviceConfig_ = value;
+          }
+          onChanged();
+        } else {
+          deviceConfigBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public Builder clearDeviceConfig() {
+        if (deviceConfigBuilder_ == null) {
+          deviceConfig_ = null;
+          onChanged();
+        } else {
+          deviceConfig_ = null;
+          deviceConfigBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.DeviceConfig device_config = 3;</code>
+       */
+      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
+        
+        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.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(),
+          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());
-          serviceUuid_ = null;
+          deviceConfig_ = null;
         }
-        return serviceUuidBuilder_;
+        return deviceConfigBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -27888,205 +18303,89 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ServiceId)
+      // @@protoc_insertion_point(builder_scope:context.DeviceEvent)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceId)
-    private static final context.ContextOuterClass.ServiceId DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.DeviceEvent)
+    private static final context.ContextOuterClass.DeviceEvent DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceId();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceEvent();
     }
 
-    public static context.ContextOuterClass.ServiceId getDefaultInstance() {
+    public static context.ContextOuterClass.DeviceEvent getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ServiceId>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceId>() {
+    private static final com.google.protobuf.Parser<DeviceEvent>
+        PARSER = new com.google.protobuf.AbstractParser<DeviceEvent>() {
       @java.lang.Override
-      public ServiceId parsePartialFrom(
+      public DeviceEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceId(input, extensionRegistry);
+        return new DeviceEvent(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ServiceId> parser() {
+    public static com.google.protobuf.Parser<DeviceEvent> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ServiceId> getParserForType() {
+    public com.google.protobuf.Parser<DeviceEvent> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
+    public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Service)
+  public interface LinkIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.LinkId)
       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.
+     * <code>.context.Uuid link_uuid = 1;</code>
+     * @return Whether the linkUuid field is set.
      */
-    boolean hasTimestamp();
+    boolean hasLinkUuid();
     /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return The timestamp.
+     * <code>.context.Uuid link_uuid = 1;</code>
+     * @return The linkUuid.
      */
-    context.ContextOuterClass.Timestamp getTimestamp();
+    context.ContextOuterClass.Uuid getLinkUuid();
     /**
-     * <code>.context.Timestamp timestamp = 8;</code>
+     * <code>.context.Uuid link_uuid = 1;</code>
      */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+    context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder();
   }
   /**
-   * Protobuf type {@code context.Service}
+   * <pre>
+   * ----- Link ----------------------------------------------------------------------------------------------------------
+   * </pre>
+   *
+   * Protobuf type {@code context.LinkId}
    */
-  public static final class Service extends
+  public static final class LinkId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Service)
-      ServiceOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.LinkId)
+      LinkIdOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use Service.newBuilder() to construct.
-    private Service(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use LinkId.newBuilder() to construct.
+    private LinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private Service() {
-      name_ = "";
-      serviceType_ = 0;
-      serviceEndpointIds_ = java.util.Collections.emptyList();
-      serviceConstraints_ = java.util.Collections.emptyList();
+    private LinkId() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new Service();
+      return new LinkId();
     }
 
     @java.lang.Override
@@ -28094,7 +18393,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Service(
+    private LinkId(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -28102,7 +18401,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -28114,83 +18412,14 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 24: {
-              int rawValue = input.readEnum();
-
-              serviceType_ = rawValue;
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              serviceEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              serviceConstraints_.add(
-                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
-              if (serviceStatus_ != null) {
-                subBuilder = serviceStatus_.toBuilder();
-              }
-              serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceStatus_);
-                serviceStatus_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 58: {
-              context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
-              if (serviceConfig_ != null) {
-                subBuilder = serviceConfig_.toBuilder();
-              }
-              serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceConfig_);
-                serviceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 66: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (linkUuid_ != null) {
+                subBuilder = linkUuid_.toBuilder();
               }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(linkUuid_);
+                linkUuid_ = subBuilder.buildPartial();
               }
 
               break;
@@ -28210,268 +18439,47 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Service_descriptor;
+      return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_LinkId_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 getServiceId();
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    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_;
-    /**
-     * <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() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
-      return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
-    }
-
-    public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
-    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;
-    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 getServiceStatus();
-    }
-
-    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 getServiceConfig();
+              context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
     }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 8;
-    private context.ContextOuterClass.Timestamp timestamp_;
+    public static final int LINK_UUID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid linkUuid_;
     /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return Whether the timestamp field is set.
+     * <code>.context.Uuid link_uuid = 1;</code>
+     * @return Whether the linkUuid field is set.
      */
     @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
+    public boolean hasLinkUuid() {
+      return linkUuid_ != null;
     }
     /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return The timestamp.
+     * <code>.context.Uuid link_uuid = 1;</code>
+     * @return The linkUuid.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+    public context.ContextOuterClass.Uuid getLinkUuid() {
+      return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
     }
     /**
-     * <code>.context.Timestamp timestamp = 8;</code>
+     * <code>.context.Uuid link_uuid = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
+    public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
+      return getLinkUuid();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -28488,29 +18496,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (serviceId_ != null) {
-        output.writeMessage(1, getServiceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        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());
+      if (linkUuid_ != null) {
+        output.writeMessage(1, getLinkUuid());
       }
       unknownFields.writeTo(output);
     }
@@ -28521,36 +18508,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getServiceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        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) {
+      if (linkUuid_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, getTimestamp());
+          .computeMessageSize(1, getLinkUuid());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -28562,37 +18522,15 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Service)) {
+      if (!(obj instanceof context.ContextOuterClass.LinkId)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.Service other = (context.ContextOuterClass.Service) obj;
+      context.ContextOuterClass.LinkId other = (context.ContextOuterClass.LinkId) 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 (hasLinkUuid() != other.hasLinkUuid()) return false;
+      if (hasLinkUuid()) {
+        if (!getLinkUuid()
+            .equals(other.getLinkUuid())) return false;
       }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
@@ -28605,102 +18543,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (hasLinkUuid()) {
+        hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
+        hash = (53 * hash) + getLinkUuid().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Service parseFrom(
+    public static context.ContextOuterClass.LinkId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Service parseFrom(
+    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.Service parseFrom(
+    public static context.ContextOuterClass.LinkId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Service parseFrom(
+    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.Service parseFrom(byte[] data)
+    public static context.ContextOuterClass.LinkId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Service parseFrom(
+    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.Service parseFrom(java.io.InputStream input)
+    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.Service parseFrom(
+    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.Service parseDelimitedFrom(java.io.InputStream input)
+    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.Service parseDelimitedFrom(
+    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.Service parseFrom(
+    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.Service parseFrom(
+    public static context.ContextOuterClass.LinkId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -28713,7 +18627,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Service prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.LinkId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -28729,26 +18643,30 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Service}
+     * <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.Service)
-        context.ContextOuterClass.ServiceOrBuilder {
+        // @@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_Service_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
+                context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.Service.newBuilder()
+      // Construct using context.ContextOuterClass.LinkId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -28761,52 +18679,16 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getServiceEndpointIdsFieldBuilder();
-          getServiceConstraintsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        name_ = "";
-
-        serviceType_ = 0;
-
-        if (serviceEndpointIdsBuilder_ == null) {
-          serviceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          serviceEndpointIdsBuilder_.clear();
-        }
-        if (serviceConstraintsBuilder_ == null) {
-          serviceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          serviceConstraintsBuilder_.clear();
-        }
-        if (serviceStatusBuilder_ == null) {
-          serviceStatus_ = null;
-        } else {
-          serviceStatus_ = null;
-          serviceStatusBuilder_ = null;
-        }
-        if (serviceConfigBuilder_ == null) {
-          serviceConfig_ = null;
-        } else {
-          serviceConfig_ = null;
-          serviceConfigBuilder_ = null;
-        }
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
+        if (linkUuidBuilder_ == null) {
+          linkUuid_ = null;
         } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
+          linkUuid_ = null;
+          linkUuidBuilder_ = null;
         }
         return this;
       }
@@ -28814,17 +18696,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Service_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Service getDefaultInstanceForType() {
-        return context.ContextOuterClass.Service.getDefaultInstance();
+      public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
+        return context.ContextOuterClass.LinkId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Service build() {
-        context.ContextOuterClass.Service result = buildPartial();
+      public context.ContextOuterClass.LinkId build() {
+        context.ContextOuterClass.LinkId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -28832,48 +18714,12 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Service buildPartial() {
-        context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
-        int from_bitField0_ = bitField0_;
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        result.name_ = name_;
-        result.serviceType_ = serviceType_;
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.serviceEndpointIds_ = serviceEndpointIds_;
-        } else {
-          result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
-        }
-        if (serviceConstraintsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.serviceConstraints_ = serviceConstraints_;
-        } else {
-          result.serviceConstraints_ = serviceConstraintsBuilder_.build();
-        }
-        if (serviceStatusBuilder_ == null) {
-          result.serviceStatus_ = serviceStatus_;
-        } else {
-          result.serviceStatus_ = serviceStatusBuilder_.build();
-        }
-        if (serviceConfigBuilder_ == null) {
-          result.serviceConfig_ = serviceConfig_;
-        } else {
-          result.serviceConfig_ = serviceConfigBuilder_.build();
-        }
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
+      public context.ContextOuterClass.LinkId buildPartial() {
+        context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
+        if (linkUuidBuilder_ == null) {
+          result.linkUuid_ = linkUuid_;
         } else {
-          result.timestamp_ = timestampBuilder_.build();
+          result.linkUuid_ = linkUuidBuilder_.build();
         }
         onBuilt();
         return result;
@@ -28881,1233 +18727,1193 @@ public final class ContextOuterClass {
 
       @java.lang.Override
       public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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_;
-          onChanged();
-        }
-        if (other.serviceType_ != 0) {
-          setServiceTypeValue(other.getServiceTypeValue());
-        }
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (!other.serviceEndpointIds_.isEmpty()) {
-            if (serviceEndpointIds_.isEmpty()) {
-              serviceEndpointIds_ = other.serviceEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureServiceEndpointIdsIsMutable();
-              serviceEndpointIds_.addAll(other.serviceEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.serviceEndpointIds_.isEmpty()) {
-            if (serviceEndpointIdsBuilder_.isEmpty()) {
-              serviceEndpointIdsBuilder_.dispose();
-              serviceEndpointIdsBuilder_ = null;
-              serviceEndpointIds_ = other.serviceEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              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_ & ~0x00000002);
-            } else {
-              ensureServiceConstraintsIsMutable();
-              serviceConstraints_.addAll(other.serviceConstraints_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.serviceConstraints_.isEmpty()) {
-            if (serviceConstraintsBuilder_.isEmpty()) {
-              serviceConstraintsBuilder_.dispose();
-              serviceConstraintsBuilder_ = null;
-              serviceConstraints_ = other.serviceConstraints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              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.unknownFields);
-        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 {
-        context.ContextOuterClass.Service parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        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;
-        onChanged();
-        return this;
+        return super.clone();
       }
-
-      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_;
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <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;
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @return The serviceType.
-       */
       @java.lang.Override
-      public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
-        return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <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();
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @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;
         }
-        
-        serviceType_ = value.getNumber();
-        onChanged();
-        return this;
       }
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearServiceType() {
-        
-        serviceType_ = 0;
+
+      public Builder mergeFrom(context.ContextOuterClass.LinkId other) {
+        if (other == context.ContextOuterClass.LinkId.getDefaultInstance()) return this;
+        if (other.hasLinkUuid()) {
+          mergeLinkUuid(other.getLinkUuid());
+        }
+        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureServiceEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
 
-      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();
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.LinkId parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
         }
+        return this;
       }
+
+      private context.ContextOuterClass.Uuid linkUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
+       * @return Whether the linkUuid field is set.
        */
-      public int getServiceEndpointIdsCount() {
-        if (serviceEndpointIdsBuilder_ == null) {
-          return serviceEndpointIds_.size();
-        } else {
-          return serviceEndpointIdsBuilder_.getCount();
-        }
+      public boolean hasLinkUuid() {
+        return linkUuidBuilder_ != null || linkUuid_ != null;
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
+       * @return The linkUuid.
        */
-      public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          return serviceEndpointIds_.get(index);
+      public context.ContextOuterClass.Uuid getLinkUuid() {
+        if (linkUuidBuilder_ == null) {
+          return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
         } else {
-          return serviceEndpointIdsBuilder_.getMessage(index);
+          return linkUuidBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
        */
-      public Builder setServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (serviceEndpointIdsBuilder_ == null) {
+      public Builder setLinkUuid(context.ContextOuterClass.Uuid value) {
+        if (linkUuidBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.set(index, value);
+          linkUuid_ = value;
           onChanged();
         } else {
-          serviceEndpointIdsBuilder_.setMessage(index, value);
+          linkUuidBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
        */
-      public Builder setServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.set(index, builderForValue.build());
+      public Builder setLinkUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (linkUuidBuilder_ == null) {
+          linkUuid_ = builderForValue.build();
           onChanged();
         } else {
-          serviceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
+          linkUuidBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
        */
-      public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
+        if (linkUuidBuilder_ == null) {
+          if (linkUuid_ != null) {
+            linkUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
+          } else {
+            linkUuid_ = value;
           }
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(value);
           onChanged();
         } else {
-          serviceEndpointIdsBuilder_.addMessage(value);
+          linkUuidBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
        */
-      public Builder addServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(index, value);
+      public Builder clearLinkUuid() {
+        if (linkUuidBuilder_ == null) {
+          linkUuid_ = null;
           onChanged();
         } else {
-          serviceEndpointIdsBuilder_.addMessage(index, value);
+          linkUuid_ = null;
+          linkUuidBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</code>
        */
-      public Builder addServiceEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
+        
+        onChanged();
+        return getLinkUuidFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Uuid link_uuid = 1;</code>
+       */
+      public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
+        if (linkUuidBuilder_ != null) {
+          return linkUuidBuilder_.getMessageOrBuilder();
         } else {
-          serviceEndpointIdsBuilder_.addMessage(builderForValue.build());
+          return linkUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       * <code>.context.Uuid link_uuid = 1;</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());
+      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 this;
+        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 {
+        return new LinkId(input, extensionRegistry);
+      }
+    };
+
+    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 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>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    java.util.List<context.ContextOuterClass.EndPointId> 
+        getLinkEndpointIdsList();
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    int getLinkEndpointIdsCount();
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+        getLinkEndpointIdsOrBuilderList();
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
+        int index);
+  }
+  /**
+   * 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() {
+      linkEndpointIds_ = java.util.Collections.emptyList();
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new Link();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Link(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              context.ContextOuterClass.LinkId.Builder subBuilder = null;
+              if (linkId_ != null) {
+                subBuilder = linkId_.toBuilder();
+              }
+              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(linkId_);
+                linkId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              linkEndpointIds_.add(
+                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    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 getLinkId();
+    }
+
+    public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 2;
+    private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
+      return linkEndpointIds_;
+    }
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+        getLinkEndpointIdsOrBuilderList() {
+      return linkEndpointIds_;
+    }
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public int getLinkEndpointIdsCount() {
+      return linkEndpointIds_.size();
+    }
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
+      return linkEndpointIds_.get(index);
+    }
+    /**
+     * <code>repeated .context.EndPointId link_endpoint_ids = 2;</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 (linkId_ != null) {
+        output.writeMessage(1, getLinkId());
       }
-      /**
-       * <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;
+      for (int i = 0; i < linkEndpointIds_.size(); i++) {
+        output.writeMessage(2, linkEndpointIds_.get(i));
       }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder clearServiceEndpointIds() {
-        if (serviceEndpointIdsBuilder_ == null) {
-          serviceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.clear();
-        }
-        return this;
+      unknownFields.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());
       }
-      /**
-       * <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;
+      for (int i = 0; i < linkEndpointIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, linkEndpointIds_.get(i));
       }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(
-          int index) {
-        return getServiceEndpointIdsFieldBuilder().getBuilder(index);
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
       }
-      /**
-       * <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);
-        }
+      if (!(obj instanceof context.ContextOuterClass.Link)) {
+        return super.equals(obj);
       }
-      /**
-       * <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_);
-        }
+      context.ContextOuterClass.Link other = (context.ContextOuterClass.Link) obj;
+
+      if (hasLinkId() != other.hasLinkId()) return false;
+      if (hasLinkId()) {
+        if (!getLinkId()
+            .equals(other.getLinkId())) return false;
       }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder() {
-        return getServiceEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
+      if (!getLinkEndpointIdsList()
+          .equals(other.getLinkEndpointIdsList())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
       }
-      /**
-       * <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());
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasLinkId()) {
+        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getLinkId().hashCode();
       }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getServiceEndpointIdsBuilderList() {
-        return getServiceEndpointIdsFieldBuilder().getBuilderList();
+      if (getLinkEndpointIdsCount() > 0) {
+        hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
+        hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
       }
-      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_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          serviceEndpointIds_ = null;
-        }
-        return serviceEndpointIdsBuilder_;
+      hash = (29 * hash) + unknownFields.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;
       }
 
-      private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ =
-        java.util.Collections.emptyList();
-      private void ensureServiceConstraintsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
-          bitField0_ |= 0x00000002;
-         }
+      @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);
       }
 
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> serviceConstraintsBuilder_;
+      // Construct using context.ContextOuterClass.Link.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
 
-      /**
-       * <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();
-        }
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public int getServiceConstraintsCount() {
-        if (serviceConstraintsBuilder_ == null) {
-          return serviceConstraints_.size();
-        } else {
-          return serviceConstraintsBuilder_.getCount();
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getLinkEndpointIdsFieldBuilder();
         }
       }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
-        if (serviceConstraintsBuilder_ == null) {
-          return serviceConstraints_.get(index);
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
         } else {
-          return serviceConstraintsBuilder_.getMessage(index);
+          linkId_ = null;
+          linkIdBuilder_ = null;
         }
-      }
-      /**
-       * <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();
+        if (linkEndpointIdsBuilder_ == null) {
+          linkEndpointIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          serviceConstraintsBuilder_.setMessage(index, value);
+          linkEndpointIdsBuilder_.clear();
         }
         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());
+
+      @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 this;
+        return result;
       }
-      /**
-       * <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();
+
+      @java.lang.Override
+      public context.ContextOuterClass.Link buildPartial() {
+        context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
+        int from_bitField0_ = bitField0_;
+        if (linkIdBuilder_ == null) {
+          result.linkId_ = linkId_;
         } else {
-          serviceConstraintsBuilder_.addMessage(value);
+          result.linkId_ = linkIdBuilder_.build();
         }
-        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();
+        if (linkEndpointIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
           }
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.add(index, value);
-          onChanged();
+          result.linkEndpointIds_ = linkEndpointIds_;
         } else {
-          serviceConstraintsBuilder_.addMessage(index, value);
+          result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
         }
-        return this;
+        onBuilt();
+        return result;
       }
-      /**
-       * <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;
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder clearServiceConstraints() {
-        if (serviceConstraintsBuilder_ == null) {
-          serviceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.clear();
-        }
-        return this;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(
-          int index) {
-        return getServiceConstraintsFieldBuilder().getBuilder(index);
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <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);
+      @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;
         }
       }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-           getServiceConstraintsOrBuilderList() {
-        if (serviceConstraintsBuilder_ != null) {
-          return serviceConstraintsBuilder_.getMessageOrBuilderList();
+
+      public Builder mergeFrom(context.ContextOuterClass.Link other) {
+        if (other == context.ContextOuterClass.Link.getDefaultInstance()) return this;
+        if (other.hasLinkId()) {
+          mergeLinkId(other.getLinkId());
+        }
+        if (linkEndpointIdsBuilder_ == null) {
+          if (!other.linkEndpointIds_.isEmpty()) {
+            if (linkEndpointIds_.isEmpty()) {
+              linkEndpointIds_ = other.linkEndpointIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureLinkEndpointIdsIsMutable();
+              linkEndpointIds_.addAll(other.linkEndpointIds_);
+            }
+            onChanged();
+          }
         } else {
-          return java.util.Collections.unmodifiableList(serviceConstraints_);
+          if (!other.linkEndpointIds_.isEmpty()) {
+            if (linkEndpointIdsBuilder_.isEmpty()) {
+              linkEndpointIdsBuilder_.dispose();
+              linkEndpointIdsBuilder_ = null;
+              linkEndpointIds_ = other.linkEndpointIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              linkEndpointIdsBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getLinkEndpointIdsFieldBuilder() : null;
+            } else {
+              linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
+            }
+          }
         }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
       }
-      /**
-       * <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();
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
-      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_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          serviceConstraints_ = null;
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.Link parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
         }
-        return serviceConstraintsBuilder_;
+        return this;
       }
+      private int bitField0_;
 
-      private context.ContextOuterClass.ServiceStatus serviceStatus_;
+      private context.ContextOuterClass.LinkId linkId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> serviceStatusBuilder_;
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       * @return Whether the serviceStatus field is set.
+       * <code>.context.LinkId link_id = 1;</code>
+       * @return Whether the linkId field is set.
        */
-      public boolean hasServiceStatus() {
-        return serviceStatusBuilder_ != null || serviceStatus_ != null;
+      public boolean hasLinkId() {
+        return linkIdBuilder_ != null || linkId_ != null;
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       * @return The serviceStatus.
+       * <code>.context.LinkId link_id = 1;</code>
+       * @return The linkId.
        */
-      public context.ContextOuterClass.ServiceStatus getServiceStatus() {
-        if (serviceStatusBuilder_ == null) {
-          return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+      public context.ContextOuterClass.LinkId getLinkId() {
+        if (linkIdBuilder_ == null) {
+          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
         } else {
-          return serviceStatusBuilder_.getMessage();
+          return linkIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</code>
        */
-      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus value) {
-        if (serviceStatusBuilder_ == null) {
+      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          serviceStatus_ = value;
+          linkId_ = value;
           onChanged();
         } else {
-          serviceStatusBuilder_.setMessage(value);
+          linkIdBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</code>
        */
-      public Builder setServiceStatus(
-          context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
-        if (serviceStatusBuilder_ == null) {
-          serviceStatus_ = builderForValue.build();
+      public Builder setLinkId(
+          context.ContextOuterClass.LinkId.Builder builderForValue) {
+        if (linkIdBuilder_ == null) {
+          linkId_ = builderForValue.build();
           onChanged();
         } else {
-          serviceStatusBuilder_.setMessage(builderForValue.build());
+          linkIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</code>
        */
-      public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
-        if (serviceStatusBuilder_ == null) {
-          if (serviceStatus_ != null) {
-            serviceStatus_ =
-              context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
+      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (linkId_ != null) {
+            linkId_ =
+              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
           } else {
-            serviceStatus_ = value;
+            linkId_ = value;
           }
           onChanged();
         } else {
-          serviceStatusBuilder_.mergeFrom(value);
+          linkIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</code>
        */
-      public Builder clearServiceStatus() {
-        if (serviceStatusBuilder_ == null) {
-          serviceStatus_ = null;
+      public Builder clearLinkId() {
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
           onChanged();
         } else {
-          serviceStatus_ = null;
-          serviceStatusBuilder_ = null;
+          linkId_ = null;
+          linkIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</code>
        */
-      public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
+      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
         
         onChanged();
-        return getServiceStatusFieldBuilder().getBuilder();
+        return getLinkIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</code>
        */
-      public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-        if (serviceStatusBuilder_ != null) {
-          return serviceStatusBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+        if (linkIdBuilder_ != null) {
+          return linkIdBuilder_.getMessageOrBuilder();
         } else {
-          return serviceStatus_ == null ?
-              context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+          return linkId_ == null ?
+              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
         }
       }
       /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
+       * <code>.context.LinkId link_id = 1;</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(),
+          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());
-          serviceStatus_ = null;
+          linkId_ = null;
         }
-        return serviceStatusBuilder_;
+        return linkIdBuilder_;
       }
 
-      private context.ContextOuterClass.ServiceConfig serviceConfig_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> serviceConfigBuilder_;
+      private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ =
+        java.util.Collections.emptyList();
+      private void ensureLinkEndpointIdsIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;
+
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       * @return Whether the serviceConfig field is set.
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public boolean hasServiceConfig() {
-        return serviceConfigBuilder_ != null || serviceConfig_ != null;
+      public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
+        if (linkEndpointIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(linkEndpointIds_);
+        } else {
+          return linkEndpointIdsBuilder_.getMessageList();
+        }
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       * @return The serviceConfig.
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public context.ContextOuterClass.ServiceConfig getServiceConfig() {
-        if (serviceConfigBuilder_ == null) {
-          return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+      public int getLinkEndpointIdsCount() {
+        if (linkEndpointIdsBuilder_ == null) {
+          return linkEndpointIds_.size();
         } else {
-          return serviceConfigBuilder_.getMessage();
+          return linkEndpointIdsBuilder_.getCount();
         }
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig value) {
-        if (serviceConfigBuilder_ == null) {
+      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 = 2;</code>
+       */
+      public Builder setLinkEndpointIds(
+          int index, context.ContextOuterClass.EndPointId value) {
+        if (linkEndpointIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          serviceConfig_ = value;
+          ensureLinkEndpointIdsIsMutable();
+          linkEndpointIds_.set(index, value);
           onChanged();
         } else {
-          serviceConfigBuilder_.setMessage(value);
+          linkEndpointIdsBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder setServiceConfig(
-          context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
-        if (serviceConfigBuilder_ == null) {
-          serviceConfig_ = builderForValue.build();
+      public Builder setLinkEndpointIds(
+          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+        if (linkEndpointIdsBuilder_ == null) {
+          ensureLinkEndpointIdsIsMutable();
+          linkEndpointIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          serviceConfigBuilder_.setMessage(builderForValue.build());
+          linkEndpointIdsBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
-        if (serviceConfigBuilder_ == null) {
-          if (serviceConfig_ != null) {
-            serviceConfig_ =
-              context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            serviceConfig_ = value;
+      public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) {
+        if (linkEndpointIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureLinkEndpointIdsIsMutable();
+          linkEndpointIds_.add(value);
           onChanged();
         } else {
-          serviceConfigBuilder_.mergeFrom(value);
+          linkEndpointIdsBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder clearServiceConfig() {
-        if (serviceConfigBuilder_ == null) {
-          serviceConfig_ = null;
+      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 {
-          serviceConfig_ = null;
-          serviceConfigBuilder_ = null;
+          linkEndpointIdsBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
-        
-        onChanged();
-        return getServiceConfigFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-        if (serviceConfigBuilder_ != null) {
-          return serviceConfigBuilder_.getMessageOrBuilder();
+      public Builder addLinkEndpointIds(
+          context.ContextOuterClass.EndPointId.Builder builderForValue) {
+        if (linkEndpointIdsBuilder_ == null) {
+          ensureLinkEndpointIdsIsMutable();
+          linkEndpointIds_.add(builderForValue.build());
+          onChanged();
         } else {
-          return serviceConfig_ == null ?
-              context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+          linkEndpointIdsBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</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;
+      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 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 timestampBuilder_ != null || timestamp_ != null;
+        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       * @return The timestamp.
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+      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 {
-          return timestampBuilder_.getMessage();
+          linkEndpointIdsBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
+      public Builder clearLinkEndpointIds() {
+        if (linkEndpointIdsBuilder_ == null) {
+          linkEndpointIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          timestampBuilder_.setMessage(value);
+          linkEndpointIdsBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
+      public Builder removeLinkEndpointIds(int index) {
+        if (linkEndpointIdsBuilder_ == null) {
+          ensureLinkEndpointIdsIsMutable();
+          linkEndpointIds_.remove(index);
           onChanged();
         } else {
-          timestampBuilder_.setMessage(builderForValue.build());
+          linkEndpointIdsBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
+      public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(
+          int index) {
+        return getLinkEndpointIdsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
+       */
+      public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
+          int index) {
+        if (linkEndpointIdsBuilder_ == null) {
+          return linkEndpointIds_.get(index);  } else {
+          return linkEndpointIdsBuilder_.getMessageOrBuilder(index);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
+      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+           getLinkEndpointIdsOrBuilderList() {
+        if (linkEndpointIdsBuilder_ != null) {
+          return linkEndpointIdsBuilder_.getMessageOrBuilderList();
         } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
+          return java.util.Collections.unmodifiableList(linkEndpointIds_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
+      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
+        return getLinkEndpointIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.EndPointId.getDefaultInstance());
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</code>
        */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
+      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(
+          int index) {
+        return getLinkEndpointIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
       }
       /**
-       * <code>.context.Timestamp timestamp = 8;</code>
+       * <code>repeated .context.EndPointId link_endpoint_ids = 2;</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(),
+      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_ & 0x00000001) != 0),
                   getParentForChildren(),
                   isClean());
-          timestamp_ = null;
+          linkEndpointIds_ = null;
         }
-        return timestampBuilder_;
+        return linkEndpointIdsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -30122,82 +19928,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.Service)
+      // @@protoc_insertion_point(builder_scope:context.Link)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Service)
-    private static final context.ContextOuterClass.Service DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.Link)
+    private static final context.ContextOuterClass.Link DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Service();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Link();
     }
 
-    public static context.ContextOuterClass.Service getDefaultInstance() {
+    public static context.ContextOuterClass.Link getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<Service>
-        PARSER = new com.google.protobuf.AbstractParser<Service>() {
+    private static final com.google.protobuf.Parser<Link>
+        PARSER = new com.google.protobuf.AbstractParser<Link>() {
       @java.lang.Override
-      public Service parsePartialFrom(
+      public Link parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Service(input, extensionRegistry);
+        return new Link(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Service> parser() {
+    public static com.google.protobuf.Parser<Link> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Service> getParserForType() {
+    public com.google.protobuf.Parser<Link> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.Service getDefaultInstanceForType() {
+    public context.ContextOuterClass.Link getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceStatusOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceStatus)
+  public interface LinkIdListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.LinkIdList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The enum numeric value on the wire for serviceStatus.
+     * <code>repeated .context.LinkId link_ids = 1;</code>
      */
-    int getServiceStatusValue();
+    java.util.List<context.ContextOuterClass.LinkId> 
+        getLinkIdsList();
     /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The serviceStatus.
+     * <code>repeated .context.LinkId link_ids = 1;</code>
      */
-    context.ContextOuterClass.ServiceStatusEnum getServiceStatus();
+    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.ServiceStatus}
+   * Protobuf type {@code context.LinkIdList}
    */
-  public static final class ServiceStatus extends
+  public static final class LinkIdList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceStatus)
-      ServiceStatusOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.LinkIdList)
+      LinkIdListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ServiceStatus.newBuilder() to construct.
-    private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use LinkIdList.newBuilder() to construct.
+    private LinkIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ServiceStatus() {
-      serviceStatus_ = 0;
+    private LinkIdList() {
+      linkIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ServiceStatus();
+      return new LinkIdList();
     }
 
     @java.lang.Override
@@ -30205,7 +20024,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ServiceStatus(
+    private LinkIdList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -30213,6 +20032,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -30220,13 +20040,16 @@ public final class ContextOuterClass {
         while (!done) {
           int tag = input.readTag();
           switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-
-              serviceStatus_ = rawValue;
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              linkIds_.add(
+                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -30244,40 +20067,64 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
+      return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
+              context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
     }
 
-    public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
-    private int serviceStatus_;
+    public static final int LINK_IDS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
     /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The enum numeric value on the wire for serviceStatus.
+     * <code>repeated .context.LinkId link_ids = 1;</code>
      */
-    @java.lang.Override public int getServiceStatusValue() {
-      return serviceStatus_;
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+      return linkIds_;
     }
     /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The serviceStatus.
+     * <code>repeated .context.LinkId link_ids = 1;</code>
      */
-    @java.lang.Override public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
-      return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
+    @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;
@@ -30294,8 +20141,8 @@ public final class ContextOuterClass {
     @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_);
+      for (int i = 0; i < linkIds_.size(); i++) {
+        output.writeMessage(1, linkIds_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -30306,9 +20153,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
+      for (int i = 0; i < linkIds_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, serviceStatus_);
+          .computeMessageSize(1, linkIds_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -30320,12 +20167,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ServiceStatus)) {
+      if (!(obj instanceof context.ContextOuterClass.LinkIdList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
+      context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
 
-      if (serviceStatus_ != other.serviceStatus_) return false;
+      if (!getLinkIdsList()
+          .equals(other.getLinkIdsList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -30337,76 +20185,78 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
-      hash = (53 * hash) + serviceStatus_;
+      if (getLinkIdsCount() > 0) {
+        hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
+        hash = (53 * hash) + getLinkIdsList().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
+    public static context.ContextOuterClass.LinkIdList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
+    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.ServiceStatus parseFrom(
+    public static context.ContextOuterClass.LinkIdList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
+    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.ServiceStatus parseFrom(byte[] data)
+    public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
+    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.ServiceStatus parseFrom(java.io.InputStream input)
+    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.ServiceStatus parseFrom(
+    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.ServiceStatus parseDelimitedFrom(java.io.InputStream input)
+    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.ServiceStatus parseDelimitedFrom(
+    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.ServiceStatus parseFrom(
+    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.ServiceStatus parseFrom(
+    public static context.ContextOuterClass.LinkIdList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -30419,7 +20269,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceStatus prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.LinkIdList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -30435,26 +20285,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ServiceStatus}
+     * Protobuf type {@code context.LinkIdList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceStatus)
-        context.ContextOuterClass.ServiceStatusOrBuilder {
+        // @@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_ServiceStatus_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
+                context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
+      // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -30467,30 +20317,35 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getLinkIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        serviceStatus_ = 0;
-
+        if (linkIdsBuilder_ == null) {
+          linkIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          linkIdsBuilder_.clear();
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceStatus.getDefaultInstance();
+      public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
+        return context.ContextOuterClass.LinkIdList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceStatus build() {
-        context.ContextOuterClass.ServiceStatus result = buildPartial();
+      public context.ContextOuterClass.LinkIdList build() {
+        context.ContextOuterClass.LinkIdList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -30498,9 +20353,18 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceStatus buildPartial() {
-        context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
-        result.serviceStatus_ = serviceStatus_;
+      public context.ContextOuterClass.LinkIdList buildPartial() {
+        context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
+        int from_bitField0_ = bitField0_;
+        if (linkIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.linkIds_ = linkIds_;
+        } else {
+          result.linkIds_ = linkIdsBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -30539,18 +20403,41 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceStatus) {
-          return mergeFrom((context.ContextOuterClass.ServiceStatus)other);
+        if (other instanceof context.ContextOuterClass.LinkIdList) {
+          return mergeFrom((context.ContextOuterClass.LinkIdList)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());
+      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.unknownFields);
         onChanged();
@@ -30567,11 +20454,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ServiceStatus parsedMessage = null;
+        context.ContextOuterClass.LinkIdList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -30580,60 +20467,247 @@ public final class ContextOuterClass {
         }
         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_;
 
-      private int serviceStatus_ = 0;
       /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @return The enum numeric value on the wire for serviceStatus.
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      @java.lang.Override public int getServiceStatusValue() {
-        return serviceStatus_;
+      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+        if (linkIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(linkIds_);
+        } else {
+          return linkIdsBuilder_.getMessageList();
+        }
       }
       /**
-       * <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.
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      public Builder setServiceStatusValue(int value) {
-        
-        serviceStatus_ = value;
-        onChanged();
+      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>.context.ServiceStatusEnum service_status = 1;</code>
-       * @return The serviceStatus.
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
-        return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
+      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>.context.ServiceStatusEnum service_status = 1;</code>
-       * @param value The serviceStatus to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatusEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
+      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);
         }
-        
-        serviceStatus_ = value.getNumber();
-        onChanged();
         return this;
       }
       /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      public Builder clearServiceStatus() {
-        
-        serviceStatus_ = 0;
-        onChanged();
+      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) {
@@ -30647,95 +20721,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ServiceStatus)
+      // @@protoc_insertion_point(builder_scope:context.LinkIdList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceStatus)
-    private static final context.ContextOuterClass.ServiceStatus DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.LinkIdList)
+    private static final context.ContextOuterClass.LinkIdList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceStatus();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkIdList();
     }
 
-    public static context.ContextOuterClass.ServiceStatus getDefaultInstance() {
+    public static context.ContextOuterClass.LinkIdList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ServiceStatus>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {
+    private static final com.google.protobuf.Parser<LinkIdList>
+        PARSER = new com.google.protobuf.AbstractParser<LinkIdList>() {
       @java.lang.Override
-      public ServiceStatus parsePartialFrom(
+      public LinkIdList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceStatus(input, extensionRegistry);
+        return new LinkIdList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ServiceStatus> parser() {
+    public static com.google.protobuf.Parser<LinkIdList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
+    public com.google.protobuf.Parser<LinkIdList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
+    public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceConfig)
+  public interface LinkListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.LinkList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
-    java.util.List<context.ContextOuterClass.ConfigRule> 
-        getConfigRulesList();
+    java.util.List<context.ContextOuterClass.Link> 
+        getLinksList();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
-    context.ContextOuterClass.ConfigRule getConfigRules(int index);
+    context.ContextOuterClass.Link getLinks(int index);
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
-    int getConfigRulesCount();
+    int getLinksCount();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
-    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList();
+    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
+        getLinksOrBuilderList();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
-    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code context.ServiceConfig}
+   * Protobuf type {@code context.LinkList}
    */
-  public static final class ServiceConfig extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceConfig)
-      ServiceConfigOrBuilder {
+  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 ServiceConfig.newBuilder() to construct.
-    private ServiceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use LinkList.newBuilder() to construct.
+    private LinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ServiceConfig() {
-      configRules_ = java.util.Collections.emptyList();
+    private LinkList() {
+      links_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ServiceConfig();
+      return new LinkList();
     }
 
     @java.lang.Override
@@ -30743,7 +20817,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ServiceConfig(
+    private LinkList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -30764,11 +20838,11 @@ public final class ContextOuterClass {
               break;
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              configRules_.add(
-                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+              links_.add(
+                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -30787,7 +20861,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          configRules_ = java.util.Collections.unmodifiableList(configRules_);
+          links_ = java.util.Collections.unmodifiableList(links_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -30795,55 +20869,55 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
+      return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
+              context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
     }
 
-    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
+    public static final int LINKS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.Link> links_;
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-      return configRules_;
+    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
+      return links_;
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList() {
-      return configRules_;
+    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
+        getLinksOrBuilderList() {
+      return links_;
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
     @java.lang.Override
-    public int getConfigRulesCount() {
-      return configRules_.size();
+    public int getLinksCount() {
+      return links_.size();
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-      return configRules_.get(index);
+    public context.ContextOuterClass.Link getLinks(int index) {
+      return links_.get(index);
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.Link links = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
         int index) {
-      return configRules_.get(index);
+      return links_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -30860,8 +20934,8 @@ public final class ContextOuterClass {
     @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));
+      for (int i = 0; i < links_.size(); i++) {
+        output.writeMessage(1, links_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -30872,9 +20946,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < configRules_.size(); i++) {
+      for (int i = 0; i < links_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, configRules_.get(i));
+          .computeMessageSize(1, links_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -30886,13 +20960,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ServiceConfig)) {
+      if (!(obj instanceof context.ContextOuterClass.LinkList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
+      context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
 
-      if (!getConfigRulesList()
-          .equals(other.getConfigRulesList())) return false;
+      if (!getLinksList()
+          .equals(other.getLinksList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -30904,78 +20978,78 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConfigRulesCount() > 0) {
-        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
-        hash = (53 * hash) + getConfigRulesList().hashCode();
+      if (getLinksCount() > 0) {
+        hash = (37 * hash) + LINKS_FIELD_NUMBER;
+        hash = (53 * hash) + getLinksList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
+    public static context.ContextOuterClass.LinkList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
+    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.ServiceConfig parseFrom(
+    public static context.ContextOuterClass.LinkList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
+    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.ServiceConfig parseFrom(byte[] data)
+    public static context.ContextOuterClass.LinkList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
+    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.ServiceConfig parseFrom(java.io.InputStream input)
+    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.ServiceConfig parseFrom(
+    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.ServiceConfig parseDelimitedFrom(java.io.InputStream input)
+    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.ServiceConfig parseDelimitedFrom(
+    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.ServiceConfig parseFrom(
+    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.ServiceConfig parseFrom(
+    public static context.ContextOuterClass.LinkList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -30988,7 +21062,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceConfig prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.LinkList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -31004,26 +21078,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ServiceConfig}
+     * Protobuf type {@code context.LinkList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceConfig)
-        context.ContextOuterClass.ServiceConfigOrBuilder {
+        // @@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_ServiceConfig_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
+                context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
+      // Construct using context.ContextOuterClass.LinkList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -31036,17 +21110,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getConfigRulesFieldBuilder();
+          getLinksFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
+        if (linksBuilder_ == null) {
+          links_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          configRulesBuilder_.clear();
+          linksBuilder_.clear();
         }
         return this;
       }
@@ -31054,17 +21128,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceConfig.getDefaultInstance();
+      public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
+        return context.ContextOuterClass.LinkList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceConfig build() {
-        context.ContextOuterClass.ServiceConfig result = buildPartial();
+      public context.ContextOuterClass.LinkList build() {
+        context.ContextOuterClass.LinkList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -31072,17 +21146,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceConfig buildPartial() {
-        context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
+      public context.ContextOuterClass.LinkList buildPartial() {
+        context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
         int from_bitField0_ = bitField0_;
-        if (configRulesBuilder_ == null) {
+        if (linksBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            configRules_ = java.util.Collections.unmodifiableList(configRules_);
+            links_ = java.util.Collections.unmodifiableList(links_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.configRules_ = configRules_;
+          result.links_ = links_;
         } else {
-          result.configRules_ = configRulesBuilder_.build();
+          result.links_ = linksBuilder_.build();
         }
         onBuilt();
         return result;
@@ -31122,39 +21196,39 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceConfig) {
-          return mergeFrom((context.ContextOuterClass.ServiceConfig)other);
+        if (other instanceof context.ContextOuterClass.LinkList) {
+          return mergeFrom((context.ContextOuterClass.LinkList)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_;
+      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 {
-              ensureConfigRulesIsMutable();
-              configRules_.addAll(other.configRules_);
+              ensureLinksIsMutable();
+              links_.addAll(other.links_);
             }
             onChanged();
           }
         } else {
-          if (!other.configRules_.isEmpty()) {
-            if (configRulesBuilder_.isEmpty()) {
-              configRulesBuilder_.dispose();
-              configRulesBuilder_ = null;
-              configRules_ = other.configRules_;
+          if (!other.links_.isEmpty()) {
+            if (linksBuilder_.isEmpty()) {
+              linksBuilder_.dispose();
+              linksBuilder_ = null;
+              links_ = other.links_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              configRulesBuilder_ = 
+              linksBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConfigRulesFieldBuilder() : null;
+                   getLinksFieldBuilder() : null;
             } else {
-              configRulesBuilder_.addAllMessages(other.configRules_);
+              linksBuilder_.addAllMessages(other.links_);
             }
           }
         }
@@ -31173,11 +21247,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ServiceConfig parsedMessage = null;
+        context.ContextOuterClass.LinkList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -31188,244 +21262,244 @@ public final class ContextOuterClass {
       }
       private int bitField0_;
 
-      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
+      private java.util.List<context.ContextOuterClass.Link> links_ =
         java.util.Collections.emptyList();
-      private void ensureConfigRulesIsMutable() {
+      private void ensureLinksIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
+          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
+          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;
 
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-        if (configRulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(configRules_);
+      public java.util.List<context.ContextOuterClass.Link> getLinksList() {
+        if (linksBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(links_);
         } else {
-          return configRulesBuilder_.getMessageList();
+          return linksBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public int getConfigRulesCount() {
-        if (configRulesBuilder_ == null) {
-          return configRules_.size();
+      public int getLinksCount() {
+        if (linksBuilder_ == null) {
+          return links_.size();
         } else {
-          return configRulesBuilder_.getCount();
+          return linksBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);
+      public context.ContextOuterClass.Link getLinks(int index) {
+        if (linksBuilder_ == null) {
+          return links_.get(index);
         } else {
-          return configRulesBuilder_.getMessage(index);
+          return linksBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
+      public Builder setLinks(
+          int index, context.ContextOuterClass.Link value) {
+        if (linksBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, value);
+          ensureLinksIsMutable();
+          links_.set(index, value);
           onChanged();
         } else {
-          configRulesBuilder_.setMessage(index, value);
+          linksBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, builderForValue.build());
+      public Builder setLinks(
+          int index, context.ContextOuterClass.Link.Builder builderForValue) {
+        if (linksBuilder_ == null) {
+          ensureLinksIsMutable();
+          links_.set(index, builderForValue.build());
           onChanged();
         } else {
-          configRulesBuilder_.setMessage(index, builderForValue.build());
+          linksBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
+      public Builder addLinks(context.ContextOuterClass.Link value) {
+        if (linksBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConfigRulesIsMutable();
-          configRules_.add(value);
+          ensureLinksIsMutable();
+          links_.add(value);
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(value);
+          linksBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
+      public Builder addLinks(
+          int index, context.ContextOuterClass.Link value) {
+        if (linksBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, value);
+          ensureLinksIsMutable();
+          links_.add(index, value);
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(index, value);
+          linksBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder addConfigRules(
-          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(builderForValue.build());
+      public Builder addLinks(
+          context.ContextOuterClass.Link.Builder builderForValue) {
+        if (linksBuilder_ == null) {
+          ensureLinksIsMutable();
+          links_.add(builderForValue.build());
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(builderForValue.build());
+          linksBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, builderForValue.build());
+      public Builder addLinks(
+          int index, context.ContextOuterClass.Link.Builder builderForValue) {
+        if (linksBuilder_ == null) {
+          ensureLinksIsMutable();
+          links_.add(index, builderForValue.build());
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(index, builderForValue.build());
+          linksBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder addAllConfigRules(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
+      public Builder addAllLinks(
+          java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
+        if (linksBuilder_ == null) {
+          ensureLinksIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, configRules_);
+              values, links_);
           onChanged();
         } else {
-          configRulesBuilder_.addAllMessages(values);
+          linksBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder clearConfigRules() {
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
+      public Builder clearLinks() {
+        if (linksBuilder_ == null) {
+          links_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          configRulesBuilder_.clear();
+          linksBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public Builder removeConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.remove(index);
+      public Builder removeLinks(int index) {
+        if (linksBuilder_ == null) {
+          ensureLinksIsMutable();
+          links_.remove(index);
           onChanged();
         } else {
-          configRulesBuilder_.remove(index);
+          linksBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
+      public context.ContextOuterClass.Link.Builder getLinksBuilder(
           int index) {
-        return getConfigRulesFieldBuilder().getBuilder(index);
+        return getLinksFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+      public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
           int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);  } else {
-          return configRulesBuilder_.getMessageOrBuilder(index);
+        if (linksBuilder_ == null) {
+          return links_.get(index);  } else {
+          return linksBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-           getConfigRulesOrBuilderList() {
-        if (configRulesBuilder_ != null) {
-          return configRulesBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
+           getLinksOrBuilderList() {
+        if (linksBuilder_ != null) {
+          return linksBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(configRules_);
+          return java.util.Collections.unmodifiableList(links_);
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
-        return getConfigRulesFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConfigRule.getDefaultInstance());
+      public context.ContextOuterClass.Link.Builder addLinksBuilder() {
+        return getLinksFieldBuilder().addBuilder(
+            context.ContextOuterClass.Link.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
+      public context.ContextOuterClass.Link.Builder addLinksBuilder(
           int index) {
-        return getConfigRulesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
+        return getLinksFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Link.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.Link links = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
-           getConfigRulesBuilderList() {
-        return getConfigRulesFieldBuilder().getBuilderList();
+      public java.util.List<context.ContextOuterClass.Link.Builder> 
+           getLinksBuilderList() {
+        return getLinksFieldBuilder().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_,
+          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());
-          configRules_ = null;
+          links_ = null;
         }
-        return configRulesBuilder_;
+        return linksBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -31440,95 +21514,100 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ServiceConfig)
+      // @@protoc_insertion_point(builder_scope:context.LinkList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceConfig)
-    private static final context.ContextOuterClass.ServiceConfig DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.LinkList)
+    private static final context.ContextOuterClass.LinkList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfig();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkList();
     }
 
-    public static context.ContextOuterClass.ServiceConfig getDefaultInstance() {
+    public static context.ContextOuterClass.LinkList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ServiceConfig>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceConfig>() {
+    private static final com.google.protobuf.Parser<LinkList>
+        PARSER = new com.google.protobuf.AbstractParser<LinkList>() {
       @java.lang.Override
-      public ServiceConfig parsePartialFrom(
+      public LinkList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceConfig(input, extensionRegistry);
+        return new LinkList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ServiceConfig> parser() {
+    public static com.google.protobuf.Parser<LinkList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ServiceConfig> getParserForType() {
+    public com.google.protobuf.Parser<LinkList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
+    public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceIdList)
+  public interface LinkEventOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.LinkEvent)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
-    java.util.List<context.ContextOuterClass.ServiceId> 
-        getServiceIdsList();
+    boolean hasEvent();
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
-    context.ContextOuterClass.ServiceId getServiceIds(int index);
+    context.ContextOuterClass.Event getEvent();
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
-    int getServiceIdsCount();
+    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.LinkId link_id = 2;</code>
+     * @return Whether the linkId field is set.
      */
-    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getServiceIdsOrBuilderList();
+    boolean hasLinkId();
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.LinkId link_id = 2;</code>
+     * @return The linkId.
      */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-        int index);
+    context.ContextOuterClass.LinkId getLinkId();
+    /**
+     * <code>.context.LinkId link_id = 2;</code>
+     */
+    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
   }
   /**
-   * Protobuf type {@code context.ServiceIdList}
+   * Protobuf type {@code context.LinkEvent}
    */
-  public static final class ServiceIdList extends
+  public static final class LinkEvent extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceIdList)
-      ServiceIdListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.LinkEvent)
+      LinkEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ServiceIdList.newBuilder() to construct.
-    private ServiceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use LinkEvent.newBuilder() to construct.
+    private LinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ServiceIdList() {
-      serviceIds_ = java.util.Collections.emptyList();
+    private LinkEvent() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ServiceIdList();
+      return new LinkEvent();
     }
 
     @java.lang.Override
@@ -31536,7 +21615,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ServiceIdList(
+    private LinkEvent(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -31544,7 +21623,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -31555,13 +21633,30 @@ public final class ContextOuterClass {
             case 0:
               done = true;
               break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000001;
+            case 10: {
+              context.ContextOuterClass.Event.Builder subBuilder = null;
+              if (event_ != null) {
+                subBuilder = event_.toBuilder();
+              }
+              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(event_);
+                event_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.LinkId.Builder subBuilder = null;
+              if (linkId_ != null) {
+                subBuilder = linkId_.toBuilder();
               }
-              serviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(linkId_);
+                linkId_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -31579,64 +21674,73 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
+      return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
+              context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
     }
 
-    public static final int SERVICE_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
+    public static final int EVENT_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Event event_;
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
-      return serviceIds_;
+    public boolean hasEvent() {
+      return event_ != null;
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getServiceIdsOrBuilderList() {
-      return serviceIds_;
+    public context.ContextOuterClass.Event getEvent() {
+      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
     @java.lang.Override
-    public int getServiceIdsCount() {
-      return serviceIds_.size();
+    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+      return getEvent();
     }
+
+    public static final int LINK_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.LinkId linkId_;
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.LinkId link_id = 2;</code>
+     * @return Whether the linkId field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceIds(int index) {
-      return serviceIds_.get(index);
+    public boolean hasLinkId() {
+      return linkId_ != null;
     }
     /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
+     * <code>.context.LinkId link_id = 2;</code>
+     * @return The linkId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-        int index) {
-      return serviceIds_.get(index);
+    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 getLinkId();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -31653,8 +21757,11 @@ public final class ContextOuterClass {
     @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));
+      if (event_ != null) {
+        output.writeMessage(1, getEvent());
+      }
+      if (linkId_ != null) {
+        output.writeMessage(2, getLinkId());
       }
       unknownFields.writeTo(output);
     }
@@ -31665,9 +21772,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < serviceIds_.size(); i++) {
+      if (event_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, serviceIds_.get(i));
+          .computeMessageSize(1, getEvent());
+      }
+      if (linkId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getLinkId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -31679,13 +21790,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ServiceIdList)) {
+      if (!(obj instanceof context.ContextOuterClass.LinkEvent)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
+      context.ContextOuterClass.LinkEvent other = (context.ContextOuterClass.LinkEvent) obj;
 
-      if (!getServiceIdsList()
-          .equals(other.getServiceIdsList())) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -31697,78 +21816,82 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getServiceIdsCount() > 0) {
-        hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceIdsList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
+    public static context.ContextOuterClass.LinkEvent parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
+    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.ServiceIdList parseFrom(
+    public static context.ContextOuterClass.LinkEvent parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
+    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.ServiceIdList parseFrom(byte[] data)
+    public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
+    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.ServiceIdList parseFrom(java.io.InputStream input)
+    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.ServiceIdList parseFrom(
+    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.ServiceIdList parseDelimitedFrom(java.io.InputStream input)
+    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.ServiceIdList parseDelimitedFrom(
+    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.ServiceIdList parseFrom(
+    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.ServiceIdList parseFrom(
+    public static context.ContextOuterClass.LinkEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -31781,7 +21904,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceIdList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.LinkEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -31797,26 +21920,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ServiceIdList}
+     * Protobuf type {@code context.LinkEvent}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceIdList)
-        context.ContextOuterClass.ServiceIdListOrBuilder {
+        // @@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_ServiceIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
+                context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
+      // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -31829,17 +21952,22 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getServiceIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (eventBuilder_ == null) {
+          event_ = null;
         } else {
-          serviceIdsBuilder_.clear();
+          event_ = null;
+          eventBuilder_ = null;
+        }
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
+        } else {
+          linkId_ = null;
+          linkIdBuilder_ = null;
         }
         return this;
       }
@@ -31847,17 +21975,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceIdList.getDefaultInstance();
+      public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
+        return context.ContextOuterClass.LinkEvent.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceIdList build() {
-        context.ContextOuterClass.ServiceIdList result = buildPartial();
+      public context.ContextOuterClass.LinkEvent build() {
+        context.ContextOuterClass.LinkEvent result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -31865,17 +21993,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceIdList buildPartial() {
-        context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (serviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.serviceIds_ = serviceIds_;
+      public context.ContextOuterClass.LinkEvent buildPartial() {
+        context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
+        if (eventBuilder_ == null) {
+          result.event_ = event_;
         } else {
-          result.serviceIds_ = serviceIdsBuilder_.build();
+          result.event_ = eventBuilder_.build();
+        }
+        if (linkIdBuilder_ == null) {
+          result.linkId_ = linkId_;
+        } else {
+          result.linkId_ = linkIdBuilder_.build();
         }
         onBuilt();
         return result;
@@ -31915,41 +22043,21 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceIdList) {
-          return mergeFrom((context.ContextOuterClass.ServiceIdList)other);
+        if (other instanceof context.ContextOuterClass.LinkEvent) {
+          return mergeFrom((context.ContextOuterClass.LinkEvent)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_);
-            }
-          }
+      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.unknownFields);
         onChanged();
@@ -31966,11 +22074,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ServiceIdList parsedMessage = null;
+        context.ContextOuterClass.LinkEvent parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -31979,246 +22087,243 @@ public final class ContextOuterClass {
         }
         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_;
 
+      private context.ContextOuterClass.Event event_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
       /**
-       * <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>
+       * <code>.context.Event event = 1;</code>
+       * @return Whether the event field is set.
        */
-      public int getServiceIdsCount() {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.size();
-        } else {
-          return serviceIdsBuilder_.getCount();
-        }
+      public boolean hasEvent() {
+        return eventBuilder_ != null || event_ != null;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 1;</code>
+       * @return The event.
        */
-      public context.ContextOuterClass.ServiceId getServiceIds(int index) {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.get(index);
+      public context.ContextOuterClass.Event getEvent() {
+        if (eventBuilder_ == null) {
+          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         } else {
-          return serviceIdsBuilder_.getMessage(index);
+          return eventBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
+      public Builder setEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureServiceIdsIsMutable();
-          serviceIds_.set(index, value);
+          event_ = value;
           onChanged();
         } else {
-          serviceIdsBuilder_.setMessage(index, value);
+          eventBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.set(index, builderForValue.build());
+      public Builder setEvent(
+          context.ContextOuterClass.Event.Builder builderForValue) {
+        if (eventBuilder_ == null) {
+          event_ = builderForValue.build();
           onChanged();
         } else {
-          serviceIdsBuilder_.setMessage(index, builderForValue.build());
+          eventBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (event_ != null) {
+            event_ =
+              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+          } else {
+            event_ = value;
           }
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(value);
           onChanged();
         } else {
-          serviceIdsBuilder_.addMessage(value);
+          eventBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 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);
+      public Builder clearEvent() {
+        if (eventBuilder_ == null) {
+          event_ = null;
           onChanged();
         } else {
-          serviceIdsBuilder_.addMessage(index, value);
+          event_ = null;
+          eventBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder addServiceIds(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.Event.Builder getEventBuilder() {
+        
+        onChanged();
+        return getEventFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Event event = 1;</code>
+       */
+      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+        if (eventBuilder_ != null) {
+          return eventBuilder_.getMessageOrBuilder();
         } else {
-          serviceIdsBuilder_.addMessage(builderForValue.build());
+          return event_ == null ?
+              context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.Event event = 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());
+      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 this;
+        return eventBuilder_;
       }
+
+      private context.ContextOuterClass.LinkId linkId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</code>
+       * @return Whether the linkId field is set.
        */
-      public Builder addAllServiceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, serviceIds_);
-          onChanged();
+      public boolean hasLinkId() {
+        return linkIdBuilder_ != null || linkId_ != null;
+      }
+      /**
+       * <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 {
-          serviceIdsBuilder_.addAllMessages(values);
+          return linkIdBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</code>
        */
-      public Builder clearServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          linkId_ = value;
           onChanged();
         } else {
-          serviceIdsBuilder_.clear();
+          linkIdBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</code>
        */
-      public Builder removeServiceIds(int index) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.remove(index);
+      public Builder setLinkId(
+          context.ContextOuterClass.LinkId.Builder builderForValue) {
+        if (linkIdBuilder_ == null) {
+          linkId_ = builderForValue.build();
           onChanged();
         } else {
-          serviceIdsBuilder_.remove(index);
+          linkIdBuilder_.setMessage(builderForValue.build());
         }
+
         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>
+       * <code>.context.LinkId link_id = 2;</code>
        */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-          int index) {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.get(index);  } else {
-          return serviceIdsBuilder_.getMessageOrBuilder(index);
+      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (linkId_ != null) {
+            linkId_ =
+              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+          } else {
+            linkId_ = value;
+          }
+          onChanged();
+        } else {
+          linkIdBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getServiceIdsOrBuilderList() {
-        if (serviceIdsBuilder_ != null) {
-          return serviceIdsBuilder_.getMessageOrBuilderList();
+      public Builder clearLinkId() {
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(serviceIds_);
+          linkId_ = null;
+          linkIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
-        return getServiceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ServiceId.getDefaultInstance());
+      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+        
+        onChanged();
+        return getLinkIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
-          int index) {
-        return getServiceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
+      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+        if (linkIdBuilder_ != null) {
+          return linkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return linkId_ == null ?
+              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
       }
       /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
+       * <code>.context.LinkId link_id = 2;</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),
+      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());
-          serviceIds_ = null;
+          linkId_ = null;
         }
-        return serviceIdsBuilder_;
+        return linkIdBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -32233,95 +22338,104 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ServiceIdList)
+      // @@protoc_insertion_point(builder_scope:context.LinkEvent)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceIdList)
-    private static final context.ContextOuterClass.ServiceIdList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.LinkEvent)
+    private static final context.ContextOuterClass.LinkEvent DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceIdList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkEvent();
     }
 
-    public static context.ContextOuterClass.ServiceIdList getDefaultInstance() {
+    public static context.ContextOuterClass.LinkEvent getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ServiceIdList>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceIdList>() {
+    private static final com.google.protobuf.Parser<LinkEvent>
+        PARSER = new com.google.protobuf.AbstractParser<LinkEvent>() {
       @java.lang.Override
-      public ServiceIdList parsePartialFrom(
+      public LinkEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceIdList(input, extensionRegistry);
+        return new LinkEvent(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ServiceIdList> parser() {
+    public static com.google.protobuf.Parser<LinkEvent> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ServiceIdList> getParserForType() {
+    public com.google.protobuf.Parser<LinkEvent> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
+    public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceList)
+  public interface ServiceIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ServiceId)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return Whether the contextId field is set.
      */
-    java.util.List<context.ContextOuterClass.Service> 
-        getServicesList();
+    boolean hasContextId();
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return The contextId.
      */
-    context.ContextOuterClass.Service getServices(int index);
+    context.ContextOuterClass.ContextId getContextId();
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.ContextId context_id = 1;</code>
      */
-    int getServicesCount();
+    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.Uuid service_uuid = 2;</code>
+     * @return Whether the serviceUuid field is set.
      */
-    java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
-        getServicesOrBuilderList();
+    boolean hasServiceUuid();
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.Uuid service_uuid = 2;</code>
+     * @return The serviceUuid.
      */
-    context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
-        int index);
+    context.ContextOuterClass.Uuid getServiceUuid();
+    /**
+     * <code>.context.Uuid service_uuid = 2;</code>
+     */
+    context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder();
   }
   /**
-   * Protobuf type {@code context.ServiceList}
+   * <pre>
+   * ----- Service -------------------------------------------------------------------------------------------------------
+   * </pre>
+   *
+   * Protobuf type {@code context.ServiceId}
    */
-  public static final class ServiceList extends
+  public static final class ServiceId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceList)
-      ServiceListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ServiceId)
+      ServiceIdOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ServiceList.newBuilder() to construct.
-    private ServiceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ServiceId.newBuilder() to construct.
+    private ServiceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ServiceList() {
-      services_ = java.util.Collections.emptyList();
+    private ServiceId() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ServiceList();
+      return new ServiceId();
     }
 
     @java.lang.Override
@@ -32329,7 +22443,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ServiceList(
+    private ServiceId(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -32337,7 +22451,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -32349,12 +22462,29 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                services_ = new java.util.ArrayList<context.ContextOuterClass.Service>();
-                mutable_bitField0_ |= 0x00000001;
+              context.ContextOuterClass.ContextId.Builder subBuilder = null;
+              if (contextId_ != null) {
+                subBuilder = contextId_.toBuilder();
               }
-              services_.add(
-                  input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
+              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(contextId_);
+                contextId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (serviceUuid_ != null) {
+                subBuilder = serviceUuid_.toBuilder();
+              }
+              serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(serviceUuid_);
+                serviceUuid_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -32372,64 +22502,73 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          services_ = java.util.Collections.unmodifiableList(services_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
+      return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
+              context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
     }
 
-    public static final int SERVICES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Service> services_;
+    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.ContextId contextId_;
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return Whether the contextId field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Service> getServicesList() {
-      return services_;
+    public boolean hasContextId() {
+      return contextId_ != null;
     }
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return The contextId.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
-        getServicesOrBuilderList() {
-      return services_;
+    public context.ContextOuterClass.ContextId getContextId() {
+      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
     }
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.ContextId context_id = 1;</code>
      */
     @java.lang.Override
-    public int getServicesCount() {
-      return services_.size();
+    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+      return getContextId();
     }
+
+    public static final int SERVICE_UUID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.Uuid serviceUuid_;
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.Uuid service_uuid = 2;</code>
+     * @return Whether the serviceUuid field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Service getServices(int index) {
-      return services_.get(index);
+    public boolean hasServiceUuid() {
+      return serviceUuid_ != null;
     }
     /**
-     * <code>repeated .context.Service services = 1;</code>
+     * <code>.context.Uuid service_uuid = 2;</code>
+     * @return The serviceUuid.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
-        int index) {
-      return services_.get(index);
+    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 getServiceUuid();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -32446,8 +22585,11 @@ public final class ContextOuterClass {
     @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));
+      if (contextId_ != null) {
+        output.writeMessage(1, getContextId());
+      }
+      if (serviceUuid_ != null) {
+        output.writeMessage(2, getServiceUuid());
       }
       unknownFields.writeTo(output);
     }
@@ -32458,9 +22600,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < services_.size(); i++) {
+      if (contextId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, services_.get(i));
+          .computeMessageSize(1, getContextId());
+      }
+      if (serviceUuid_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getServiceUuid());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -32472,13 +22618,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ServiceList)) {
+      if (!(obj instanceof context.ContextOuterClass.ServiceId)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
+      context.ContextOuterClass.ServiceId other = (context.ContextOuterClass.ServiceId) obj;
 
-      if (!getServicesList()
-          .equals(other.getServicesList())) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -32490,78 +22644,82 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getServicesCount() > 0) {
-        hash = (37 * hash) + SERVICES_FIELD_NUMBER;
-        hash = (53 * hash) + getServicesList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ServiceList parseFrom(
+    public static context.ContextOuterClass.ServiceId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceList parseFrom(
+    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.ServiceList parseFrom(
+    public static context.ContextOuterClass.ServiceId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceList parseFrom(
+    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.ServiceList parseFrom(byte[] data)
+    public static context.ContextOuterClass.ServiceId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceList parseFrom(
+    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.ServiceList parseFrom(java.io.InputStream input)
+    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.ServiceList parseFrom(
+    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.ServiceList parseDelimitedFrom(java.io.InputStream input)
+    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.ServiceList parseDelimitedFrom(
+    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.ServiceList parseFrom(
+    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.ServiceList parseFrom(
+    public static context.ContextOuterClass.ServiceId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -32574,7 +22732,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ServiceId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -32590,26 +22748,30 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ServiceList}
+     * <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.ServiceList)
-        context.ContextOuterClass.ServiceListOrBuilder {
+        // @@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_ServiceList_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
+                context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ServiceList.newBuilder()
+      // Construct using context.ContextOuterClass.ServiceId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -32622,17 +22784,22 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getServicesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (servicesBuilder_ == null) {
-          services_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (contextIdBuilder_ == null) {
+          contextId_ = null;
         } else {
-          servicesBuilder_.clear();
+          contextId_ = null;
+          contextIdBuilder_ = null;
+        }
+        if (serviceUuidBuilder_ == null) {
+          serviceUuid_ = null;
+        } else {
+          serviceUuid_ = null;
+          serviceUuidBuilder_ = null;
         }
         return this;
       }
@@ -32640,17 +22807,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceList.getDefaultInstance();
+      public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
+        return context.ContextOuterClass.ServiceId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceList build() {
-        context.ContextOuterClass.ServiceList result = buildPartial();
+      public context.ContextOuterClass.ServiceId build() {
+        context.ContextOuterClass.ServiceId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -32658,17 +22825,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceList buildPartial() {
-        context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
-        int from_bitField0_ = bitField0_;
-        if (servicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            services_ = java.util.Collections.unmodifiableList(services_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.services_ = services_;
+      public context.ContextOuterClass.ServiceId buildPartial() {
+        context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
+        if (contextIdBuilder_ == null) {
+          result.contextId_ = contextId_;
         } else {
-          result.services_ = servicesBuilder_.build();
+          result.contextId_ = contextIdBuilder_.build();
+        }
+        if (serviceUuidBuilder_ == null) {
+          result.serviceUuid_ = serviceUuid_;
+        } else {
+          result.serviceUuid_ = serviceUuidBuilder_.build();
         }
         onBuilt();
         return result;
@@ -32708,41 +22875,21 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceList) {
-          return mergeFrom((context.ContextOuterClass.ServiceList)other);
+        if (other instanceof context.ContextOuterClass.ServiceId) {
+          return mergeFrom((context.ContextOuterClass.ServiceId)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_);
-            }
-          }
+      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.unknownFields);
         onChanged();
@@ -32759,11 +22906,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ServiceList parsedMessage = null;
+        context.ContextOuterClass.ServiceId parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -32772,246 +22919,243 @@ public final class ContextOuterClass {
         }
         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 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 contextIdBuilder_ != null || contextId_ != null;
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> servicesBuilder_;
-
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.ContextId context_id = 1;</code>
+       * @return The contextId.
        */
-      public java.util.List<context.ContextOuterClass.Service> getServicesList() {
-        if (servicesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(services_);
+      public context.ContextOuterClass.ContextId getContextId() {
+        if (contextIdBuilder_ == null) {
+          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         } else {
-          return servicesBuilder_.getMessageList();
+          return contextIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      public int getServicesCount() {
-        if (servicesBuilder_ == null) {
-          return services_.size();
+      public Builder setContextId(context.ContextOuterClass.ContextId value) {
+        if (contextIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          contextId_ = value;
+          onChanged();
         } else {
-          return servicesBuilder_.getCount();
+          contextIdBuilder_.setMessage(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      public context.ContextOuterClass.Service getServices(int index) {
-        if (servicesBuilder_ == null) {
-          return services_.get(index);
+      public Builder setContextId(
+          context.ContextOuterClass.ContextId.Builder builderForValue) {
+        if (contextIdBuilder_ == null) {
+          contextId_ = builderForValue.build();
+          onChanged();
         } else {
-          return servicesBuilder_.getMessage(index);
+          contextIdBuilder_.setMessage(builderForValue.build());
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      public Builder setServices(
-          int index, context.ContextOuterClass.Service value) {
-        if (servicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+        if (contextIdBuilder_ == null) {
+          if (contextId_ != null) {
+            contextId_ =
+              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+          } else {
+            contextId_ = value;
           }
-          ensureServicesIsMutable();
-          services_.set(index, value);
           onChanged();
         } else {
-          servicesBuilder_.setMessage(index, value);
+          contextIdBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      public Builder setServices(
-          int index, context.ContextOuterClass.Service.Builder builderForValue) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.set(index, builderForValue.build());
+      public Builder clearContextId() {
+        if (contextIdBuilder_ == null) {
+          contextId_ = null;
           onChanged();
         } else {
-          servicesBuilder_.setMessage(index, builderForValue.build());
+          contextId_ = null;
+          contextIdBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      public Builder addServices(context.ContextOuterClass.Service value) {
-        if (servicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServicesIsMutable();
-          services_.add(value);
-          onChanged();
+      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+        
+        onChanged();
+        return getContextIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.ContextId context_id = 1;</code>
+       */
+      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+        if (contextIdBuilder_ != null) {
+          return contextIdBuilder_.getMessageOrBuilder();
         } else {
-          servicesBuilder_.addMessage(value);
+          return contextId_ == null ?
+              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <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 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;
+      public boolean hasServiceUuid() {
+        return serviceUuidBuilder_ != null || serviceUuid_ != null;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.Uuid service_uuid = 2;</code>
+       * @return The serviceUuid.
        */
-      public Builder addServices(
-          context.ContextOuterClass.Service.Builder builderForValue) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.add(builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.Uuid getServiceUuid() {
+        if (serviceUuidBuilder_ == null) {
+          return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
         } else {
-          servicesBuilder_.addMessage(builderForValue.build());
+          return serviceUuidBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.Uuid service_uuid = 2;</code>
        */
-      public Builder addServices(
-          int index, context.ContextOuterClass.Service.Builder builderForValue) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.add(index, builderForValue.build());
+      public Builder setServiceUuid(context.ContextOuterClass.Uuid value) {
+        if (serviceUuidBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          serviceUuid_ = value;
           onChanged();
         } else {
-          servicesBuilder_.addMessage(index, builderForValue.build());
+          serviceUuidBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.Uuid service_uuid = 2;</code>
        */
-      public Builder addAllServices(
-          java.lang.Iterable<? extends context.ContextOuterClass.Service> values) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, services_);
+      public Builder setServiceUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (serviceUuidBuilder_ == null) {
+          serviceUuid_ = builderForValue.build();
           onChanged();
         } else {
-          servicesBuilder_.addAllMessages(values);
+          serviceUuidBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.Uuid service_uuid = 2;</code>
        */
-      public Builder clearServices() {
-        if (servicesBuilder_ == null) {
-          services_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
+        if (serviceUuidBuilder_ == null) {
+          if (serviceUuid_ != null) {
+            serviceUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
+          } else {
+            serviceUuid_ = value;
+          }
           onChanged();
         } else {
-          servicesBuilder_.clear();
+          serviceUuidBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.Uuid service_uuid = 2;</code>
        */
-      public Builder removeServices(int index) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.remove(index);
+      public Builder clearServiceUuid() {
+        if (serviceUuidBuilder_ == null) {
+          serviceUuid_ = null;
           onChanged();
         } else {
-          servicesBuilder_.remove(index);
+          serviceUuid_ = null;
+          serviceUuidBuilder_ = null;
         }
+
         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>
+       * <code>.context.Uuid service_uuid = 2;</code>
        */
-      public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
-          int index) {
-        if (servicesBuilder_ == null) {
-          return services_.get(index);  } else {
-          return servicesBuilder_.getMessageOrBuilder(index);
-        }
+      public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
+        
+        onChanged();
+        return getServiceUuidFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.Service services = 1;</code>
+       * <code>.context.Uuid service_uuid = 2;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
-           getServicesOrBuilderList() {
-        if (servicesBuilder_ != null) {
-          return servicesBuilder_.getMessageOrBuilderList();
+      public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
+        if (serviceUuidBuilder_ != null) {
+          return serviceUuidBuilder_.getMessageOrBuilder();
         } else {
-          return java.util.Collections.unmodifiableList(services_);
+          return serviceUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
         }
       }
       /**
-       * <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>
+       * <code>.context.Uuid service_uuid = 2;</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),
+      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());
-          services_ = null;
+          serviceUuid_ = null;
         }
-        return servicesBuilder_;
+        return serviceUuidBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -33026,103 +23170,192 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ServiceList)
+      // @@protoc_insertion_point(builder_scope:context.ServiceId)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceList)
-    private static final context.ContextOuterClass.ServiceList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ServiceId)
+    private static final context.ContextOuterClass.ServiceId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceId();
     }
 
-    public static context.ContextOuterClass.ServiceList getDefaultInstance() {
+    public static context.ContextOuterClass.ServiceId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ServiceList>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceList>() {
+    private static final com.google.protobuf.Parser<ServiceId>
+        PARSER = new com.google.protobuf.AbstractParser<ServiceId>() {
       @java.lang.Override
-      public ServiceList parsePartialFrom(
+      public ServiceId parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceList(input, extensionRegistry);
+        return new ServiceId(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ServiceList> parser() {
+    public static com.google.protobuf.Parser<ServiceId> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ServiceList> getParserForType() {
+    public com.google.protobuf.Parser<ServiceId> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
+    public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ServiceFilterOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceFilter)
+  public interface ServiceOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.Service)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return Whether the serviceIds field is set.
+     * <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.ServiceTypeEnum service_type = 2;</code>
+     * @return The enum numeric value on the wire for serviceType.
+     */
+    int getServiceTypeValue();
+    /**
+     * <code>.context.ServiceTypeEnum service_type = 2;</code>
+     * @return The serviceType.
+     */
+    context.ContextOuterClass.ServiceTypeEnum getServiceType();
+
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    java.util.List<context.ContextOuterClass.EndPointId> 
+        getServiceEndpointIdsList();
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    context.ContextOuterClass.EndPointId getServiceEndpointIds(int index);
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    int getServiceEndpointIdsCount();
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+        getServiceEndpointIdsOrBuilderList();
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
+     */
+    java.util.List<context.ContextOuterClass.Constraint> 
+        getServiceConstraintsList();
+    /**
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
      */
-    boolean hasServiceIds();
+    context.ContextOuterClass.Constraint getServiceConstraints(int index);
+    /**
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
+     */
+    int getServiceConstraintsCount();
     /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return The serviceIds.
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
      */
-    context.ContextOuterClass.ServiceIdList getServiceIds();
+    java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+        getServiceConstraintsOrBuilderList();
     /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
      */
-    context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder();
+    context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
+        int index);
 
     /**
-     * <code>bool include_endpoint_ids = 2;</code>
-     * @return The includeEndpointIds.
+     * <code>.context.ServiceStatus service_status = 5;</code>
+     * @return Whether the serviceStatus field is set.
+     */
+    boolean hasServiceStatus();
+    /**
+     * <code>.context.ServiceStatus service_status = 5;</code>
+     * @return The serviceStatus.
+     */
+    context.ContextOuterClass.ServiceStatus getServiceStatus();
+    /**
+     * <code>.context.ServiceStatus service_status = 5;</code>
      */
-    boolean getIncludeEndpointIds();
+    context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder();
 
     /**
-     * <code>bool include_constraints = 3;</code>
-     * @return The includeConstraints.
+     * <code>.context.ServiceConfig service_config = 6;</code>
+     * @return Whether the serviceConfig field is set.
+     */
+    boolean hasServiceConfig();
+    /**
+     * <code>.context.ServiceConfig service_config = 6;</code>
+     * @return The serviceConfig.
+     */
+    context.ContextOuterClass.ServiceConfig getServiceConfig();
+    /**
+     * <code>.context.ServiceConfig service_config = 6;</code>
      */
-    boolean getIncludeConstraints();
+    context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder();
 
     /**
-     * <code>bool include_config_rules = 4;</code>
-     * @return The includeConfigRules.
+     * <code>.context.Timestamp timestamp = 7;</code>
+     * @return Whether the timestamp field is set.
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 7;</code>
+     * @return The timestamp.
+     */
+    context.ContextOuterClass.Timestamp getTimestamp();
+    /**
+     * <code>.context.Timestamp timestamp = 7;</code>
      */
-    boolean getIncludeConfigRules();
+    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
   }
   /**
-   * Protobuf type {@code context.ServiceFilter}
+   * Protobuf type {@code context.Service}
    */
-  public static final class ServiceFilter extends
+  public static final class Service extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceFilter)
-      ServiceFilterOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Service)
+      ServiceOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ServiceFilter.newBuilder() to construct.
-    private ServiceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Service.newBuilder() to construct.
+    private Service(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ServiceFilter() {
+    private Service() {
+      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 ServiceFilter();
+      return new Service();
     }
 
     @java.lang.Override
@@ -33130,7 +23363,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ServiceFilter(
+    private Service(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -33138,6 +23371,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -33149,31 +23383,79 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.ServiceIdList.Builder subBuilder = null;
-              if (serviceIds_ != null) {
-                subBuilder = serviceIds_.toBuilder();
+              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+              if (serviceId_ != null) {
+                subBuilder = serviceId_.toBuilder();
               }
-              serviceIds_ = input.readMessage(context.ContextOuterClass.ServiceIdList.parser(), extensionRegistry);
+              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceIds_);
-                serviceIds_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(serviceId_);
+                serviceId_ = subBuilder.buildPartial();
               }
 
               break;
             }
             case 16: {
+              int rawValue = input.readEnum();
 
-              includeEndpointIds_ = input.readBool();
+              serviceType_ = rawValue;
               break;
             }
-            case 24: {
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              serviceEndpointIds_.add(
+                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              serviceConstraints_.add(
+                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
+              break;
+            }
+            case 42: {
+              context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
+              if (serviceStatus_ != null) {
+                subBuilder = serviceStatus_.toBuilder();
+              }
+              serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(serviceStatus_);
+                serviceStatus_ = subBuilder.buildPartial();
+              }
 
-              includeConstraints_ = input.readBool();
               break;
             }
-            case 32: {
+            case 50: {
+              context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
+              if (serviceConfig_ != null) {
+                subBuilder = serviceConfig_.toBuilder();
+              }
+              serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(serviceConfig_);
+                serviceConfig_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 58: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (timestamp_ != null) {
+                subBuilder = timestamp_.toBuilder();
+              }
+              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(timestamp_);
+                timestamp_ = subBuilder.buildPartial();
+              }
 
-              includeConfigRules_ = input.readBool();
               break;
             }
             default: {
@@ -33191,80 +23473,230 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) != 0)) {
+          serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
+      return context.ContextOuterClass.internal_static_context_Service_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
+              context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
     }
 
-    public static final int SERVICE_IDS_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ServiceIdList serviceIds_;
+    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 getServiceId();
+    }
+
+    public static final int SERVICE_TYPE_FIELD_NUMBER = 2;
+    private int serviceType_;
+    /**
+     * <code>.context.ServiceTypeEnum service_type = 2;</code>
+     * @return The enum numeric value on the wire for serviceType.
+     */
+    @java.lang.Override public int getServiceTypeValue() {
+      return serviceType_;
+    }
+    /**
+     * <code>.context.ServiceTypeEnum service_type = 2;</code>
+     * @return The serviceType.
+     */
+    @java.lang.Override public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
+      @SuppressWarnings("deprecation")
+      context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+      return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
+    }
+
+    public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
+    private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
+      return serviceEndpointIds_;
+    }
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+        getServiceEndpointIdsOrBuilderList() {
+      return serviceEndpointIds_;
+    }
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    @java.lang.Override
+    public int getServiceEndpointIdsCount() {
+      return serviceEndpointIds_.size();
+    }
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
+      return serviceEndpointIds_.get(index);
+    }
+    /**
+     * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
+        int index) {
+      return serviceEndpointIds_.get(index);
+    }
+
+    public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 4;
+    private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;
+    /**
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
+      return serviceConstraints_;
+    }
+    /**
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+        getServiceConstraintsOrBuilderList() {
+      return serviceConstraints_;
+    }
     /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return Whether the serviceIds field is set.
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
      */
     @java.lang.Override
-    public boolean hasServiceIds() {
-      return serviceIds_ != null;
+    public int getServiceConstraintsCount() {
+      return serviceConstraints_.size();
     }
     /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return The serviceIds.
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceIdList getServiceIds() {
-      return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+    public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
+      return serviceConstraints_.get(index);
     }
     /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
+     * <code>repeated .context.Constraint service_constraints = 4;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-      return getServiceIds();
+    public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
+        int index) {
+      return serviceConstraints_.get(index);
     }
 
-    public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
-    private boolean includeEndpointIds_;
+    public static final int SERVICE_STATUS_FIELD_NUMBER = 5;
+    private context.ContextOuterClass.ServiceStatus serviceStatus_;
+    /**
+     * <code>.context.ServiceStatus service_status = 5;</code>
+     * @return Whether the serviceStatus field is set.
+     */
+    @java.lang.Override
+    public boolean hasServiceStatus() {
+      return serviceStatus_ != null;
+    }
     /**
-     * <code>bool include_endpoint_ids = 2;</code>
-     * @return The includeEndpointIds.
+     * <code>.context.ServiceStatus service_status = 5;</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 = 5;</code>
      */
     @java.lang.Override
-    public boolean getIncludeEndpointIds() {
-      return includeEndpointIds_;
+    public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
+      return getServiceStatus();
     }
 
-    public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
-    private boolean includeConstraints_;
+    public static final int SERVICE_CONFIG_FIELD_NUMBER = 6;
+    private context.ContextOuterClass.ServiceConfig serviceConfig_;
+    /**
+     * <code>.context.ServiceConfig service_config = 6;</code>
+     * @return Whether the serviceConfig field is set.
+     */
+    @java.lang.Override
+    public boolean hasServiceConfig() {
+      return serviceConfig_ != null;
+    }
+    /**
+     * <code>.context.ServiceConfig service_config = 6;</code>
+     * @return The serviceConfig.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.ServiceConfig getServiceConfig() {
+      return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+    }
     /**
-     * <code>bool include_constraints = 3;</code>
-     * @return The includeConstraints.
+     * <code>.context.ServiceConfig service_config = 6;</code>
      */
     @java.lang.Override
-    public boolean getIncludeConstraints() {
-      return includeConstraints_;
+    public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
+      return getServiceConfig();
     }
 
-    public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
-    private boolean includeConfigRules_;
+    public static final int TIMESTAMP_FIELD_NUMBER = 7;
+    private context.ContextOuterClass.Timestamp timestamp_;
+    /**
+     * <code>.context.Timestamp timestamp = 7;</code>
+     * @return Whether the timestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasTimestamp() {
+      return timestamp_ != null;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 7;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getTimestamp() {
+      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+    }
     /**
-     * <code>bool include_config_rules = 4;</code>
-     * @return The includeConfigRules.
+     * <code>.context.Timestamp timestamp = 7;</code>
      */
     @java.lang.Override
-    public boolean getIncludeConfigRules() {
-      return includeConfigRules_;
+    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+      return getTimestamp();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -33281,17 +23713,26 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (serviceIds_ != null) {
-        output.writeMessage(1, getServiceIds());
+      if (serviceId_ != null) {
+        output.writeMessage(1, getServiceId());
+      }
+      if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
+        output.writeEnum(2, serviceType_);
+      }
+      for (int i = 0; i < serviceEndpointIds_.size(); i++) {
+        output.writeMessage(3, serviceEndpointIds_.get(i));
+      }
+      for (int i = 0; i < serviceConstraints_.size(); i++) {
+        output.writeMessage(4, serviceConstraints_.get(i));
       }
-      if (includeEndpointIds_ != false) {
-        output.writeBool(2, includeEndpointIds_);
+      if (serviceStatus_ != null) {
+        output.writeMessage(5, getServiceStatus());
       }
-      if (includeConstraints_ != false) {
-        output.writeBool(3, includeConstraints_);
+      if (serviceConfig_ != null) {
+        output.writeMessage(6, getServiceConfig());
       }
-      if (includeConfigRules_ != false) {
-        output.writeBool(4, includeConfigRules_);
+      if (timestamp_ != null) {
+        output.writeMessage(7, getTimestamp());
       }
       unknownFields.writeTo(output);
     }
@@ -33302,21 +23743,33 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (serviceIds_ != null) {
+      if (serviceId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getServiceId());
+      }
+      if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, serviceType_);
+      }
+      for (int i = 0; i < serviceEndpointIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, serviceEndpointIds_.get(i));
+      }
+      for (int i = 0; i < serviceConstraints_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getServiceIds());
+          .computeMessageSize(4, serviceConstraints_.get(i));
       }
-      if (includeEndpointIds_ != false) {
+      if (serviceStatus_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(2, includeEndpointIds_);
+          .computeMessageSize(5, getServiceStatus());
       }
-      if (includeConstraints_ != false) {
+      if (serviceConfig_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, includeConstraints_);
+          .computeMessageSize(6, getServiceConfig());
       }
-      if (includeConfigRules_ != false) {
+      if (timestamp_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, includeConfigRules_);
+          .computeMessageSize(7, getTimestamp());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -33328,22 +23781,36 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ServiceFilter)) {
+      if (!(obj instanceof context.ContextOuterClass.Service)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ServiceFilter other = (context.ContextOuterClass.ServiceFilter) obj;
+      context.ContextOuterClass.Service other = (context.ContextOuterClass.Service) obj;
 
-      if (hasServiceIds() != other.hasServiceIds()) return false;
-      if (hasServiceIds()) {
-        if (!getServiceIds()
-            .equals(other.getServiceIds())) return false;
+      if (hasServiceId() != other.hasServiceId()) return false;
+      if (hasServiceId()) {
+        if (!getServiceId()
+            .equals(other.getServiceId())) 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 (getIncludeEndpointIds()
-          != other.getIncludeEndpointIds()) return false;
-      if (getIncludeConstraints()
-          != other.getIncludeConstraints()) return false;
-      if (getIncludeConfigRules()
-          != other.getIncludeConfigRules()) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -33355,87 +23822,100 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasServiceIds()) {
-        hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceIds().hashCode();
+      if (hasServiceId()) {
+        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getServiceId().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 = (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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
+    public static context.ContextOuterClass.Service parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
+    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.ServiceFilter parseFrom(
+    public static context.ContextOuterClass.Service parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
+    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.ServiceFilter parseFrom(byte[] data)
+    public static context.ContextOuterClass.Service parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
+    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.ServiceFilter parseFrom(java.io.InputStream input)
+    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.ServiceFilter parseFrom(
+    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.ServiceFilter parseDelimitedFrom(java.io.InputStream input)
+    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.ServiceFilter parseDelimitedFrom(
+    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.ServiceFilter parseFrom(
+    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.ServiceFilter parseFrom(
+    public static context.ContextOuterClass.Service parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -33448,7 +23928,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceFilter prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Service prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -33464,26 +23944,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ServiceFilter}
+     * Protobuf type {@code context.Service}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceFilter)
-        context.ContextOuterClass.ServiceFilterOrBuilder {
+        // @@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_ServiceFilter_descriptor;
+        return context.ContextOuterClass.internal_static_context_Service_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
+                context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
+      // Construct using context.ContextOuterClass.Service.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -33496,40 +23976,68 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getServiceEndpointIdsFieldBuilder();
+          getServiceConstraintsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = null;
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
         } else {
-          serviceIds_ = null;
-          serviceIdsBuilder_ = null;
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
         }
-        includeEndpointIds_ = false;
-
-        includeConstraints_ = false;
-
-        includeConfigRules_ = false;
+        serviceType_ = 0;
 
+        if (serviceEndpointIdsBuilder_ == null) {
+          serviceEndpointIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          serviceEndpointIdsBuilder_.clear();
+        }
+        if (serviceConstraintsBuilder_ == null) {
+          serviceConstraints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          serviceConstraintsBuilder_.clear();
+        }
+        if (serviceStatusBuilder_ == null) {
+          serviceStatus_ = null;
+        } else {
+          serviceStatus_ = null;
+          serviceStatusBuilder_ = null;
+        }
+        if (serviceConfigBuilder_ == null) {
+          serviceConfig_ = null;
+        } else {
+          serviceConfig_ = null;
+          serviceConfigBuilder_ = null;
+        }
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+        } else {
+          timestamp_ = null;
+          timestampBuilder_ = null;
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
+        return context.ContextOuterClass.internal_static_context_Service_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceFilter.getDefaultInstance();
+      public context.ContextOuterClass.Service getDefaultInstanceForType() {
+        return context.ContextOuterClass.Service.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceFilter build() {
-        context.ContextOuterClass.ServiceFilter result = buildPartial();
+      public context.ContextOuterClass.Service build() {
+        context.ContextOuterClass.Service result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -33537,16 +24045,48 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ServiceFilter buildPartial() {
-        context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
-        if (serviceIdsBuilder_ == null) {
-          result.serviceIds_ = serviceIds_;
+      public context.ContextOuterClass.Service buildPartial() {
+        context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
+        int from_bitField0_ = bitField0_;
+        if (serviceIdBuilder_ == null) {
+          result.serviceId_ = serviceId_;
         } else {
-          result.serviceIds_ = serviceIdsBuilder_.build();
+          result.serviceId_ = serviceIdBuilder_.build();
+        }
+        result.serviceType_ = serviceType_;
+        if (serviceEndpointIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.serviceEndpointIds_ = serviceEndpointIds_;
+        } else {
+          result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
+        }
+        if (serviceConstraintsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) != 0)) {
+            serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.serviceConstraints_ = serviceConstraints_;
+        } else {
+          result.serviceConstraints_ = serviceConstraintsBuilder_.build();
+        }
+        if (serviceStatusBuilder_ == null) {
+          result.serviceStatus_ = serviceStatus_;
+        } else {
+          result.serviceStatus_ = serviceStatusBuilder_.build();
+        }
+        if (serviceConfigBuilder_ == null) {
+          result.serviceConfig_ = serviceConfig_;
+        } else {
+          result.serviceConfig_ = serviceConfigBuilder_.build();
+        }
+        if (timestampBuilder_ == null) {
+          result.timestamp_ = timestamp_;
+        } else {
+          result.timestamp_ = timestampBuilder_.build();
         }
-        result.includeEndpointIds_ = includeEndpointIds_;
-        result.includeConstraints_ = includeConstraints_;
-        result.includeConfigRules_ = includeConfigRules_;
         onBuilt();
         return result;
       }
@@ -33585,27 +24125,82 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceFilter) {
-          return mergeFrom((context.ContextOuterClass.ServiceFilter)other);
+        if (other instanceof context.ContextOuterClass.Service) {
+          return mergeFrom((context.ContextOuterClass.Service)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());
+      public Builder mergeFrom(context.ContextOuterClass.Service other) {
+        if (other == context.ContextOuterClass.Service.getDefaultInstance()) return this;
+        if (other.hasServiceId()) {
+          mergeServiceId(other.getServiceId());
+        }
+        if (other.serviceType_ != 0) {
+          setServiceTypeValue(other.getServiceTypeValue());
+        }
+        if (serviceEndpointIdsBuilder_ == null) {
+          if (!other.serviceEndpointIds_.isEmpty()) {
+            if (serviceEndpointIds_.isEmpty()) {
+              serviceEndpointIds_ = other.serviceEndpointIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureServiceEndpointIdsIsMutable();
+              serviceEndpointIds_.addAll(other.serviceEndpointIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.serviceEndpointIds_.isEmpty()) {
+            if (serviceEndpointIdsBuilder_.isEmpty()) {
+              serviceEndpointIdsBuilder_.dispose();
+              serviceEndpointIdsBuilder_ = null;
+              serviceEndpointIds_ = other.serviceEndpointIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              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_ & ~0x00000002);
+            } else {
+              ensureServiceConstraintsIsMutable();
+              serviceConstraints_.addAll(other.serviceConstraints_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.serviceConstraints_.isEmpty()) {
+            if (serviceConstraintsBuilder_.isEmpty()) {
+              serviceConstraintsBuilder_.dispose();
+              serviceConstraintsBuilder_ = null;
+              serviceConstraints_ = other.serviceConstraints_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              serviceConstraintsBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getServiceConstraintsFieldBuilder() : null;
+            } else {
+              serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
+            }
+          }
         }
-        if (other.getIncludeEndpointIds() != false) {
-          setIncludeEndpointIds(other.getIncludeEndpointIds());
+        if (other.hasServiceStatus()) {
+          mergeServiceStatus(other.getServiceStatus());
         }
-        if (other.getIncludeConstraints() != false) {
-          setIncludeConstraints(other.getIncludeConstraints());
+        if (other.hasServiceConfig()) {
+          mergeServiceConfig(other.getServiceConfig());
         }
-        if (other.getIncludeConfigRules() != false) {
-          setIncludeConfigRules(other.getIncludeConfigRules());
+        if (other.hasTimestamp()) {
+          mergeTimestamp(other.getTimestamp());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -33622,11 +24217,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ServiceFilter parsedMessage = null;
+        context.ContextOuterClass.Service parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceFilter) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -33635,1041 +24230,1016 @@ public final class ContextOuterClass {
         }
         return this;
       }
+      private int bitField0_;
 
-      private context.ContextOuterClass.ServiceIdList serviceIds_;
+      private context.ContextOuterClass.ServiceId serviceId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> serviceIdsBuilder_;
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       * @return Whether the serviceIds field is set.
+       * <code>.context.ServiceId service_id = 1;</code>
+       * @return Whether the serviceId field is set.
        */
-      public boolean hasServiceIds() {
-        return serviceIdsBuilder_ != null || serviceIds_ != null;
+      public boolean hasServiceId() {
+        return serviceIdBuilder_ != null || serviceId_ != null;
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       * @return The serviceIds.
+       * <code>.context.ServiceId service_id = 1;</code>
+       * @return The serviceId.
        */
-      public context.ContextOuterClass.ServiceIdList getServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+      public context.ContextOuterClass.ServiceId getServiceId() {
+        if (serviceIdBuilder_ == null) {
+          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         } else {
-          return serviceIdsBuilder_.getMessage();
+          return serviceIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 1;</code>
        */
-      public Builder setServiceIds(context.ContextOuterClass.ServiceIdList value) {
-        if (serviceIdsBuilder_ == null) {
+      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          serviceIds_ = value;
+          serviceId_ = value;
           onChanged();
         } else {
-          serviceIdsBuilder_.setMessage(value);
+          serviceIdBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 1;</code>
        */
-      public Builder setServiceIds(
-          context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = builderForValue.build();
+      public Builder setServiceId(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = builderForValue.build();
           onChanged();
         } else {
-          serviceIdsBuilder_.setMessage(builderForValue.build());
+          serviceIdBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 1;</code>
        */
-      public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
-        if (serviceIdsBuilder_ == null) {
-          if (serviceIds_ != null) {
-            serviceIds_ =
-              context.ContextOuterClass.ServiceIdList.newBuilder(serviceIds_).mergeFrom(value).buildPartial();
+      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (serviceId_ != null) {
+            serviceId_ =
+              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
           } else {
-            serviceIds_ = value;
+            serviceId_ = value;
           }
           onChanged();
         } else {
-          serviceIdsBuilder_.mergeFrom(value);
+          serviceIdBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 1;</code>
        */
-      public Builder clearServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = null;
+      public Builder clearServiceId() {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
           onChanged();
         } else {
-          serviceIds_ = null;
-          serviceIdsBuilder_ = null;
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 1;</code>
        */
-      public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
+      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
         
         onChanged();
-        return getServiceIdsFieldBuilder().getBuilder();
+        return getServiceIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 1;</code>
        */
-      public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-        if (serviceIdsBuilder_ != null) {
-          return serviceIdsBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+        if (serviceIdBuilder_ != null) {
+          return serviceIdBuilder_.getMessageOrBuilder();
         } else {
-          return serviceIds_ == null ?
-              context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+          return serviceId_ == null ?
+              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
       }
       /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
+       * <code>.context.ServiceId service_id = 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(),
+          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());
-          serviceIds_ = null;
+          serviceId_ = null;
         }
-        return serviceIdsBuilder_;
+        return serviceIdBuilder_;
       }
 
-      private boolean includeEndpointIds_ ;
+      private int serviceType_ = 0;
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 2;</code>
+       * @return The enum numeric value on the wire for serviceType.
+       */
+      @java.lang.Override public int getServiceTypeValue() {
+        return serviceType_;
+      }
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 2;</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;
+        onChanged();
+        return this;
+      }
       /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return The includeEndpointIds.
+       * <code>.context.ServiceTypeEnum service_type = 2;</code>
+       * @return The serviceType.
        */
       @java.lang.Override
-      public boolean getIncludeEndpointIds() {
-        return includeEndpointIds_;
+      public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
+        @SuppressWarnings("deprecation")
+        context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+        return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
+      }
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 2;</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();
+        }
+        
+        serviceType_ = value.getNumber();
+        onChanged();
+        return this;
       }
       /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @param value The includeEndpointIds to set.
+       * <code>.context.ServiceTypeEnum service_type = 2;</code>
        * @return This builder for chaining.
        */
-      public Builder setIncludeEndpointIds(boolean value) {
+      public Builder clearServiceType() {
         
-        includeEndpointIds_ = value;
+        serviceType_ = 0;
         onChanged();
         return this;
       }
+
+      private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ =
+        java.util.Collections.emptyList();
+      private void ensureServiceEndpointIdsIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> serviceEndpointIdsBuilder_;
+
+      /**
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</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 = 3;</code>
+       */
+      public int getServiceEndpointIdsCount() {
+        if (serviceEndpointIdsBuilder_ == null) {
+          return serviceEndpointIds_.size();
+        } else {
+          return serviceEndpointIdsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</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 = 3;</code>
+       */
+      public Builder clearServiceEndpointIds() {
+        if (serviceEndpointIdsBuilder_ == null) {
+          serviceEndpointIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          serviceEndpointIdsBuilder_.clear();
+        }
+        return this;
+      }
       /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      public Builder clearIncludeEndpointIds() {
-        
-        includeEndpointIds_ = false;
-        onChanged();
+      public Builder removeServiceEndpointIds(int index) {
+        if (serviceEndpointIdsBuilder_ == null) {
+          ensureServiceEndpointIdsIsMutable();
+          serviceEndpointIds_.remove(index);
+          onChanged();
+        } else {
+          serviceEndpointIdsBuilder_.remove(index);
+        }
         return this;
       }
-
-      private boolean includeConstraints_ ;
       /**
-       * <code>bool include_constraints = 3;</code>
-       * @return The includeConstraints.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      @java.lang.Override
-      public boolean getIncludeConstraints() {
-        return includeConstraints_;
+      public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(
+          int index) {
+        return getServiceEndpointIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>bool include_constraints = 3;</code>
-       * @param value The includeConstraints to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      public Builder setIncludeConstraints(boolean value) {
-        
-        includeConstraints_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
+          int index) {
+        if (serviceEndpointIdsBuilder_ == null) {
+          return serviceEndpointIds_.get(index);  } else {
+          return serviceEndpointIdsBuilder_.getMessageOrBuilder(index);
+        }
       }
       /**
-       * <code>bool include_constraints = 3;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      public Builder clearIncludeConstraints() {
-        
-        includeConstraints_ = false;
-        onChanged();
-        return this;
+      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+           getServiceEndpointIdsOrBuilderList() {
+        if (serviceEndpointIdsBuilder_ != null) {
+          return serviceEndpointIdsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(serviceEndpointIds_);
+        }
       }
-
-      private boolean includeConfigRules_ ;
       /**
-       * <code>bool include_config_rules = 4;</code>
-       * @return The includeConfigRules.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      @java.lang.Override
-      public boolean getIncludeConfigRules() {
-        return includeConfigRules_;
+      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder() {
+        return getServiceEndpointIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.EndPointId.getDefaultInstance());
       }
       /**
-       * <code>bool include_config_rules = 4;</code>
-       * @param value The includeConfigRules to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      public Builder setIncludeConfigRules(boolean value) {
-        
-        includeConfigRules_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder(
+          int index) {
+        return getServiceEndpointIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
       }
       /**
-       * <code>bool include_config_rules = 4;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.EndPointId service_endpoint_ids = 3;</code>
        */
-      public Builder clearIncludeConfigRules() {
-        
-        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 {
-        return new ServiceFilter(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
+      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
+           getServiceEndpointIdsBuilderList() {
+        return getServiceEndpointIdsFieldBuilder().getBuilderList();
       }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
+      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_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          serviceEndpointIds_ = null;
         }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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 getEvent();
-    }
-
-    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 getServiceId();
-    }
-
-    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());
-      }
-      unknownFields.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 += unknownFields.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;
+        return serviceEndpointIdsBuilder_;
       }
-      if (!unknownFields.equals(other.unknownFields)) 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();
+      private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ =
+        java.util.Collections.emptyList();
+      private void ensureServiceConstraintsIsMutable() {
+        if (!((bitField0_ & 0x00000002) != 0)) {
+          serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
+          bitField0_ |= 0x00000002;
+         }
       }
-      hash = (29 * hash) + unknownFields.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);
-    }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> serviceConstraintsBuilder_;
 
-    @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;
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
+        if (serviceConstraintsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(serviceConstraints_);
+        } else {
+          return serviceConstraintsBuilder_.getMessageList();
+        }
       }
-
-      @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);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public int getServiceConstraintsCount() {
+        if (serviceConstraintsBuilder_ == null) {
+          return serviceConstraints_.size();
+        } else {
+          return serviceConstraintsBuilder_.getCount();
+        }
       }
-
-      // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
+        if (serviceConstraintsBuilder_ == null) {
+          return serviceConstraints_.get(index);
+        } else {
+          return serviceConstraintsBuilder_.getMessage(index);
+        }
       }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</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;
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</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;
       }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public Builder addServiceConstraints(context.ContextOuterClass.Constraint value) {
+        if (serviceConstraintsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureServiceConstraintsIsMutable();
+          serviceConstraints_.add(value);
+          onChanged();
         } else {
-          event_ = null;
-          eventBuilder_ = null;
+          serviceConstraintsBuilder_.addMessage(value);
         }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
+        return this;
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</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 {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
+          serviceConstraintsBuilder_.addMessage(index, value);
         }
         return this;
       }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</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;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceEvent.getDefaultInstance();
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</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;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceEvent build() {
-        context.ContextOuterClass.ServiceEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</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 result;
+        return this;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceEvent buildPartial() {
-        context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public Builder clearServiceConstraints() {
+        if (serviceConstraintsBuilder_ == null) {
+          serviceConstraints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
         } else {
-          result.event_ = eventBuilder_.build();
+          serviceConstraintsBuilder_.clear();
         }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
+        return this;
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public Builder removeServiceConstraints(int index) {
+        if (serviceConstraintsBuilder_ == null) {
+          ensureServiceConstraintsIsMutable();
+          serviceConstraints_.remove(index);
+          onChanged();
         } else {
-          result.serviceId_ = serviceIdBuilder_.build();
+          serviceConstraintsBuilder_.remove(index);
         }
-        onBuilt();
-        return result;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(
+          int index) {
+        return getServiceConstraintsFieldBuilder().getBuilder(index);
       }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
+          int index) {
+        if (serviceConstraintsBuilder_ == null) {
+          return serviceConstraints_.get(index);  } else {
+          return serviceConstraintsBuilder_.getMessageOrBuilder(index);
+        }
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+           getServiceConstraintsOrBuilderList() {
+        if (serviceConstraintsBuilder_ != null) {
+          return serviceConstraintsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(serviceConstraints_);
+        }
       }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder() {
+        return getServiceConstraintsFieldBuilder().addBuilder(
+            context.ContextOuterClass.Constraint.getDefaultInstance());
       }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder(
+          int index) {
+        return getServiceConstraintsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Constraint.getDefaultInstance());
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+      /**
+       * <code>repeated .context.Constraint service_constraints = 4;</code>
+       */
+      public java.util.List<context.ContextOuterClass.Constraint.Builder> 
+           getServiceConstraintsBuilderList() {
+        return getServiceConstraintsFieldBuilder().getBuilderList();
       }
-      @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;
+      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_ & 0x00000002) != 0),
+                  getParentForChildren(),
+                  isClean());
+          serviceConstraints_ = null;
         }
+        return serviceConstraintsBuilder_;
       }
 
-      public Builder mergeFrom(context.ContextOuterClass.ServiceEvent other) {
-        if (other == context.ContextOuterClass.ServiceEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
+      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 = 5;</code>
+       * @return Whether the serviceStatus field is set.
+       */
+      public boolean hasServiceStatus() {
+        return serviceStatusBuilder_ != null || serviceStatus_ != null;
+      }
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</code>
+       * @return The serviceStatus.
+       */
+      public context.ContextOuterClass.ServiceStatus getServiceStatus() {
+        if (serviceStatusBuilder_ == null) {
+          return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+        } else {
+          return serviceStatusBuilder_.getMessage();
         }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
+      }
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</code>
+       */
+      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus value) {
+        if (serviceStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          serviceStatus_ = value;
+          onChanged();
+        } else {
+          serviceStatusBuilder_.setMessage(value);
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
+
         return this;
       }
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</code>
+       */
+      public Builder setServiceStatus(
+          context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
+        if (serviceStatusBuilder_ == null) {
+          serviceStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          serviceStatusBuilder_.setMessage(builderForValue.build());
+        }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</code>
+       */
+      public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
+        if (serviceStatusBuilder_ == null) {
+          if (serviceStatus_ != null) {
+            serviceStatus_ =
+              context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
+          } else {
+            serviceStatus_ = value;
           }
+          onChanged();
+        } else {
+          serviceStatusBuilder_.mergeFrom(value);
         }
+
         return this;
       }
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</code>
+       */
+      public Builder clearServiceStatus() {
+        if (serviceStatusBuilder_ == null) {
+          serviceStatus_ = null;
+          onChanged();
+        } else {
+          serviceStatus_ = null;
+          serviceStatusBuilder_ = null;
+        }
 
-      private context.ContextOuterClass.Event event_;
+        return this;
+      }
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</code>
+       */
+      public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
+        
+        onChanged();
+        return getServiceStatusFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.ServiceStatus service_status = 5;</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 = 5;</code>
+       */
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+          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.Event event = 1;</code>
-       * @return Whether the event field is set.
+       * <code>.context.ServiceConfig service_config = 6;</code>
+       * @return Whether the serviceConfig field is set.
        */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
+      public boolean hasServiceConfig() {
+        return serviceConfigBuilder_ != null || serviceConfig_ != null;
       }
       /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
+       * <code>.context.ServiceConfig service_config = 6;</code>
+       * @return The serviceConfig.
        */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+      public context.ContextOuterClass.ServiceConfig getServiceConfig() {
+        if (serviceConfigBuilder_ == null) {
+          return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
         } else {
-          return eventBuilder_.getMessage();
+          return serviceConfigBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</code>
        */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
+      public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig value) {
+        if (serviceConfigBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          event_ = value;
+          serviceConfig_ = value;
           onChanged();
         } else {
-          eventBuilder_.setMessage(value);
+          serviceConfigBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</code>
        */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
+      public Builder setServiceConfig(
+          context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
+        if (serviceConfigBuilder_ == null) {
+          serviceConfig_ = builderForValue.build();
           onChanged();
         } else {
-          eventBuilder_.setMessage(builderForValue.build());
+          serviceConfigBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</code>
        */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+      public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
+        if (serviceConfigBuilder_ == null) {
+          if (serviceConfig_ != null) {
+            serviceConfig_ =
+              context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
           } else {
-            event_ = value;
+            serviceConfig_ = value;
           }
           onChanged();
         } else {
-          eventBuilder_.mergeFrom(value);
+          serviceConfigBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</code>
        */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
+      public Builder clearServiceConfig() {
+        if (serviceConfigBuilder_ == null) {
+          serviceConfig_ = null;
           onChanged();
         } else {
-          event_ = null;
-          eventBuilder_ = null;
+          serviceConfig_ = null;
+          serviceConfigBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</code>
        */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
+      public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
         
         onChanged();
-        return getEventFieldBuilder().getBuilder();
+        return getServiceConfigFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</code>
        */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
+        if (serviceConfigBuilder_ != null) {
+          return serviceConfigBuilder_.getMessageOrBuilder();
         } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
+          return serviceConfig_ == null ?
+              context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
         }
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>.context.ServiceConfig service_config = 6;</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(),
+          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());
-          event_ = null;
+          serviceConfig_ = null;
         }
-        return eventBuilder_;
+        return serviceConfigBuilder_;
       }
 
-      private context.ContextOuterClass.ServiceId serviceId_;
+      private context.ContextOuterClass.Timestamp timestamp_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return Whether the serviceId field is set.
+       * <code>.context.Timestamp timestamp = 7;</code>
+       * @return Whether the timestamp field is set.
        */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
+      public boolean hasTimestamp() {
+        return timestampBuilder_ != null || timestamp_ != null;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return The serviceId.
+       * <code>.context.Timestamp timestamp = 7;</code>
+       * @return The timestamp.
        */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+      public context.ContextOuterClass.Timestamp getTimestamp() {
+        if (timestampBuilder_ == null) {
+          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         } else {
-          return serviceIdBuilder_.getMessage();
+          return timestampBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>.context.Timestamp timestamp = 7;</code>
        */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
+      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          serviceId_ = value;
+          timestamp_ = value;
           onChanged();
         } else {
-          serviceIdBuilder_.setMessage(value);
+          timestampBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
+       * <code>.context.Timestamp timestamp = 7;</code>
+       */
+      public Builder setTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (timestampBuilder_ == null) {
+          timestamp_ = builderForValue.build();
           onChanged();
         } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
+          timestampBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>.context.Timestamp timestamp = 7;</code>
        */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (timestamp_ != null) {
+            timestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
           } else {
-            serviceId_ = value;
+            timestamp_ = value;
           }
           onChanged();
         } else {
-          serviceIdBuilder_.mergeFrom(value);
+          timestampBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>.context.Timestamp timestamp = 7;</code>
        */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
+      public Builder clearTimestamp() {
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
           onChanged();
         } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
+          timestamp_ = null;
+          timestampBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>.context.Timestamp timestamp = 7;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
         
         onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
+        return getTimestampFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>.context.Timestamp timestamp = 7;</code>
        */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+        if (timestampBuilder_ != null) {
+          return timestampBuilder_.getMessageOrBuilder();
         } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+          return timestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>.context.Timestamp timestamp = 7;</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(),
+          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());
-          serviceId_ = null;
+          timestamp_ = null;
         }
-        return serviceIdBuilder_;
+        return timestampBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -34684,104 +25254,82 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ServiceEvent)
+      // @@protoc_insertion_point(builder_scope:context.Service)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceEvent)
-    private static final context.ContextOuterClass.ServiceEvent DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.Service)
+    private static final context.ContextOuterClass.Service DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceEvent();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Service();
     }
 
-    public static context.ContextOuterClass.ServiceEvent getDefaultInstance() {
+    public static context.ContextOuterClass.Service getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ServiceEvent>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceEvent>() {
+    private static final com.google.protobuf.Parser<Service>
+        PARSER = new com.google.protobuf.AbstractParser<Service>() {
       @java.lang.Override
-      public ServiceEvent parsePartialFrom(
+      public Service parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceEvent(input, extensionRegistry);
+        return new Service(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ServiceEvent> parser() {
+    public static com.google.protobuf.Parser<Service> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ServiceEvent> getParserForType() {
+    public com.google.protobuf.Parser<Service> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
+    public context.ContextOuterClass.Service getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceId)
+  public interface ServiceStatusOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ServiceStatus)
       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.
+     * <code>.context.ServiceStatusEnum service_status = 1;</code>
+     * @return The enum numeric value on the wire for serviceStatus.
      */
-    context.ContextOuterClass.Uuid getSliceUuid();
+    int getServiceStatusValue();
     /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
+     * <code>.context.ServiceStatusEnum service_status = 1;</code>
+     * @return The serviceStatus.
      */
-    context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder();
+    context.ContextOuterClass.ServiceStatusEnum getServiceStatus();
   }
   /**
-   * <pre>
-   * ----- Slice ---------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.SliceId}
+   * Protobuf type {@code context.ServiceStatus}
    */
-  public static final class SliceId extends
+  public static final class ServiceStatus extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceId)
-      SliceIdOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ServiceStatus)
+      ServiceStatusOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceId.newBuilder() to construct.
-    private SliceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ServiceStatus.newBuilder() to construct.
+    private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceId() {
+    private ServiceStatus() {
+      serviceStatus_ = 0;
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SliceId();
+      return new ServiceStatus();
     }
 
     @java.lang.Override
@@ -34789,7 +25337,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceId(
+    private ServiceStatus(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -34807,30 +25355,10 @@ public final class ContextOuterClass {
             case 0:
               done = true;
               break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (sliceUuid_ != null) {
-                subBuilder = sliceUuid_.toBuilder();
-              }
-              sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceUuid_);
-                sliceUuid_ = subBuilder.buildPartial();
-              }
+            case 8: {
+              int rawValue = input.readEnum();
 
+              serviceStatus_ = rawValue;
               break;
             }
             default: {
@@ -34854,67 +25382,34 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
+      return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ServiceStatus_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 getContextId();
+              context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
     }
 
-    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;
-    }
+    public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
+    private int serviceStatus_;
     /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     * @return The sliceUuid.
+     * <code>.context.ServiceStatusEnum service_status = 1;</code>
+     * @return The enum numeric value on the wire for serviceStatus.
      */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getSliceUuid() {
-      return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+    @java.lang.Override public int getServiceStatusValue() {
+      return serviceStatus_;
     }
     /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
+     * <code>.context.ServiceStatusEnum service_status = 1;</code>
+     * @return The serviceStatus.
      */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-      return getSliceUuid();
+    @java.lang.Override public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
+      @SuppressWarnings("deprecation")
+      context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
+      return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -34931,11 +25426,8 @@ public final class ContextOuterClass {
     @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());
+      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
+        output.writeEnum(1, serviceStatus_);
       }
       unknownFields.writeTo(output);
     }
@@ -34946,13 +25438,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (sliceUuid_ != null) {
+      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getSliceUuid());
+          .computeEnumSize(1, serviceStatus_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -34964,21 +25452,12 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceId)) {
+      if (!(obj instanceof context.ContextOuterClass.ServiceStatus)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.SliceId other = (context.ContextOuterClass.SliceId) obj;
+      context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) 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 (serviceStatus_ != other.serviceStatus_) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -34990,82 +25469,76 @@ public final class ContextOuterClass {
       }
       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 = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
+      hash = (53 * hash) + serviceStatus_;
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceId parseFrom(
+    public static context.ContextOuterClass.ServiceStatus parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceId parseFrom(
+    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.SliceId parseFrom(
+    public static context.ContextOuterClass.ServiceStatus parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceId parseFrom(
+    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.SliceId parseFrom(byte[] data)
+    public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceId parseFrom(
+    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.SliceId parseFrom(java.io.InputStream input)
+    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.SliceId parseFrom(
+    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.SliceId parseDelimitedFrom(java.io.InputStream input)
+    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.SliceId parseDelimitedFrom(
+    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.SliceId parseFrom(
+    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.SliceId parseFrom(
+    public static context.ContextOuterClass.ServiceStatus parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -35078,7 +25551,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceId prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ServiceStatus prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -35094,30 +25567,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * <pre>
-     * ----- Slice ---------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.SliceId}
+     * Protobuf type {@code context.ServiceStatus}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceId)
-        context.ContextOuterClass.SliceIdOrBuilder {
+        // @@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_SliceId_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
+                context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.SliceId.newBuilder()
+      // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -35135,35 +25604,25 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        if (sliceUuidBuilder_ == null) {
-          sliceUuid_ = null;
-        } else {
-          sliceUuid_ = null;
-          sliceUuidBuilder_ = null;
-        }
+        serviceStatus_ = 0;
+
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceId.getDefaultInstance();
+      public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
+        return context.ContextOuterClass.ServiceStatus.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceId build() {
-        context.ContextOuterClass.SliceId result = buildPartial();
+      public context.ContextOuterClass.ServiceStatus build() {
+        context.ContextOuterClass.ServiceStatus result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -35171,18 +25630,9 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceId buildPartial() {
-        context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        if (sliceUuidBuilder_ == null) {
-          result.sliceUuid_ = sliceUuid_;
-        } else {
-          result.sliceUuid_ = sliceUuidBuilder_.build();
-        }
+      public context.ContextOuterClass.ServiceStatus buildPartial() {
+        context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
+        result.serviceStatus_ = serviceStatus_;
         onBuilt();
         return result;
       }
@@ -35197,311 +25647,124 @@ public final class ContextOuterClass {
           java.lang.Object value) {
         return super.setField(field, value);
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.SliceId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      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 contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <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_;
-        }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <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_;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-
-      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 sliceUuidBuilder_ != null || sliceUuid_ != null;
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <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_;
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.ServiceStatus) {
+          return mergeFrom((context.ContextOuterClass.ServiceStatus)other);
         } else {
-          return sliceUuidBuilder_.getMessage();
+          super.mergeFrom(other);
+          return this;
         }
       }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          sliceUuidBuilder_.setMessage(value);
-        }
 
+      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.unknownFields);
+        onChanged();
         return this;
       }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public Builder setSliceUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (sliceUuidBuilder_ == null) {
-          sliceUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceUuidBuilder_.setMessage(builderForValue.build());
-        }
 
-        return this;
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
-        if (sliceUuidBuilder_ == null) {
-          if (sliceUuid_ != null) {
-            sliceUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
-          } else {
-            sliceUuid_ = value;
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.ServiceStatus parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
-          onChanged();
-        } else {
-          sliceUuidBuilder_.mergeFrom(value);
         }
-
         return this;
       }
+
+      private int serviceStatus_ = 0;
       /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
+       * <code>.context.ServiceStatusEnum service_status = 1;</code>
+       * @return The enum numeric value on the wire for serviceStatus.
        */
-      public Builder clearSliceUuid() {
-        if (sliceUuidBuilder_ == null) {
-          sliceUuid_ = null;
-          onChanged();
-        } else {
-          sliceUuid_ = null;
-          sliceUuidBuilder_ = null;
-        }
-
-        return this;
+      @java.lang.Override public int getServiceStatusValue() {
+        return serviceStatus_;
       }
       /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
+       * <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 context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
+      public Builder setServiceStatusValue(int value) {
         
+        serviceStatus_ = value;
         onChanged();
-        return getSliceUuidFieldBuilder().getBuilder();
+        return this;
       }
       /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
+       * <code>.context.ServiceStatusEnum service_status = 1;</code>
+       * @return The serviceStatus.
        */
-      public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-        if (sliceUuidBuilder_ != null) {
-          return sliceUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
-        }
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
+        @SuppressWarnings("deprecation")
+        context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
+        return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
       }
       /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
+       * <code>.context.ServiceStatusEnum service_status = 1;</code>
+       * @param value The serviceStatus to set.
+       * @return This builder for chaining.
        */
-      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;
+      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatusEnum value) {
+        if (value == null) {
+          throw new NullPointerException();
         }
-        return sliceUuidBuilder_;
+        
+        serviceStatus_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>.context.ServiceStatusEnum service_status = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearServiceStatus() {
+        
+        serviceStatus_ = 0;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -35516,389 +25779,128 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceId)
+      // @@protoc_insertion_point(builder_scope:context.ServiceStatus)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceId)
-    private static final context.ContextOuterClass.SliceId DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ServiceStatus)
+    private static final context.ContextOuterClass.ServiceStatus DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceId();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceStatus();
     }
 
-    public static context.ContextOuterClass.SliceId getDefaultInstance() {
+    public static context.ContextOuterClass.ServiceStatus getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceId>
-        PARSER = new com.google.protobuf.AbstractParser<SliceId>() {
+    private static final com.google.protobuf.Parser<ServiceStatus>
+        PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {
       @java.lang.Override
-      public SliceId parsePartialFrom(
+      public ServiceStatus parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceId(input, extensionRegistry);
+        return new ServiceStatus(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceId> parser() {
+    public static com.google.protobuf.Parser<ServiceStatus> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceId> getParserForType() {
+    public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
+    public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Slice)
+  public interface ServiceConfigOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ServiceConfig)
       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>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    java.util.List<context.ContextOuterClass.SliceId> 
-        getSliceSubsliceIdsList();
+    java.util.List<context.ContextOuterClass.ConfigRule> 
+        getConfigRulesList();
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.SliceId getSliceSubsliceIds(int index);
+    context.ContextOuterClass.ConfigRule getConfigRules(int index);
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    int getSliceSubsliceIdsCount();
+    int getConfigRulesCount();
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceSubsliceIdsOrBuilderList();
+    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+        getConfigRulesOrBuilderList();
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
+    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
         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}
+   * Protobuf type {@code context.ServiceConfig}
    */
-  public static final class Slice extends
+  public static final class ServiceConfig 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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Slice(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
-              }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              sliceEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              sliceConstraints_.add(
-                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              sliceServiceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-              break;
-            }
-            case 50: {
-              if (!((mutable_bitField0_ & 0x00000008) != 0)) {
-                sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              sliceSubsliceIds_.add(
-                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-              break;
-            }
-            case 58: {
-              context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
-              if (sliceStatus_ != null) {
-                subBuilder = sliceStatus_.toBuilder();
-              }
-              sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceStatus_);
-                sliceStatus_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 66: {
-              context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
-              if (sliceConfig_ != null) {
-                subBuilder = sliceConfig_.toBuilder();
-              }
-              sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceConfig_);
-                sliceConfig_ = subBuilder.buildPartial();
-              }
+      // @@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();
+    }
 
-              break;
-            }
-            case 74: {
-              context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
-              if (sliceOwner_ != null) {
-                subBuilder = sliceOwner_.toBuilder();
-              }
-              sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceOwner_);
-                sliceOwner_ = subBuilder.buildPartial();
-              }
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ServiceConfig();
+    }
 
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ServiceConfig(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
               break;
-            }
-            case 82: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                mutable_bitField0_ |= 0x00000001;
               }
-
+              configRules_.add(
+                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -35917,16 +25919,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) != 0)) {
-          sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+          configRules_ = java.util.Collections.unmodifiableList(configRules_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -35934,343 +25927,55 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Slice_descriptor;
+      return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ServiceConfig_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 getSliceId();
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    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;
-    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;
-    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;
-    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);
+              context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
     }
 
-    public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
-    private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
+    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
-      return sliceSubsliceIds_;
+    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+      return configRules_;
     }
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceSubsliceIdsOrBuilderList() {
-      return sliceSubsliceIds_;
+    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+        getConfigRulesOrBuilderList() {
+      return configRules_;
     }
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public int getSliceSubsliceIdsCount() {
-      return sliceSubsliceIds_.size();
+    public int getConfigRulesCount() {
+      return configRules_.size();
     }
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
-      return sliceSubsliceIds_.get(index);
+    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+      return configRules_.get(index);
     }
     /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
+    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
         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 getSliceStatus();
-    }
-
-    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 getSliceConfig();
-    }
-
-    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 getSliceOwner();
-    }
-
-    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 getTimestamp();
+      return configRules_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -36287,35 +25992,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (sliceId_ != null) {
-        output.writeMessage(1, getSliceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        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());
+      for (int i = 0; i < configRules_.size(); i++) {
+        output.writeMessage(1, configRules_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -36326,44 +26004,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (sliceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSliceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        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) {
+      for (int i = 0; i < configRules_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(10, getTimestamp());
+          .computeMessageSize(1, configRules_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -36375,46 +26018,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Slice)) {
+      if (!(obj instanceof context.ContextOuterClass.ServiceConfig)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.Slice other = (context.ContextOuterClass.Slice) obj;
+      context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) 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 (!getConfigRulesList()
+          .equals(other.getConfigRulesList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -36426,112 +26036,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (getConfigRulesCount() > 0) {
+        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
+        hash = (53 * hash) + getConfigRulesList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Slice parseFrom(
+    public static context.ContextOuterClass.ServiceConfig parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Slice parseFrom(
+    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.Slice parseFrom(
+    public static context.ContextOuterClass.ServiceConfig parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Slice parseFrom(
+    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.Slice parseFrom(byte[] data)
+    public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Slice parseFrom(
+    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.Slice parseFrom(java.io.InputStream input)
+    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.Slice parseFrom(
+    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.Slice parseDelimitedFrom(java.io.InputStream input)
+    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.Slice parseDelimitedFrom(
+    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.Slice parseFrom(
+    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.Slice parseFrom(
+    public static context.ContextOuterClass.ServiceConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -36544,7 +26120,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Slice prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ServiceConfig prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -36560,26 +26136,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Slice}
+     * Protobuf type {@code context.ServiceConfig}
      */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Slice)
-        context.ContextOuterClass.SliceOrBuilder {
+        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_Slice_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
+                context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.Slice.newBuilder()
+      // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -36592,70 +26168,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getSliceEndpointIdsFieldBuilder();
-          getSliceConstraintsFieldBuilder();
-          getSliceServiceIdsFieldBuilder();
-          getSliceSubsliceIdsFieldBuilder();
+          getConfigRulesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (sliceEndpointIdsBuilder_ == null) {
-          sliceEndpointIds_ = java.util.Collections.emptyList();
+        if (configRulesBuilder_ == null) {
+          configRules_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          sliceEndpointIdsBuilder_.clear();
-        }
-        if (sliceConstraintsBuilder_ == null) {
-          sliceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          sliceConstraintsBuilder_.clear();
-        }
-        if (sliceServiceIdsBuilder_ == null) {
-          sliceServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          sliceServiceIdsBuilder_.clear();
-        }
-        if (sliceSubsliceIdsBuilder_ == null) {
-          sliceSubsliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
-        } else {
-          sliceSubsliceIdsBuilder_.clear();
-        }
-        if (sliceStatusBuilder_ == null) {
-          sliceStatus_ = null;
-        } else {
-          sliceStatus_ = null;
-          sliceStatusBuilder_ = null;
-        }
-        if (sliceConfigBuilder_ == null) {
-          sliceConfig_ = null;
-        } else {
-          sliceConfig_ = null;
-          sliceConfigBuilder_ = null;
-        }
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwner_ = null;
-        } else {
-          sliceOwner_ = null;
-          sliceOwnerBuilder_ = null;
-        }
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
+          configRulesBuilder_.clear();
         }
         return this;
       }
@@ -36663,17 +26186,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Slice_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Slice getDefaultInstanceForType() {
-        return context.ContextOuterClass.Slice.getDefaultInstance();
+      public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
+        return context.ContextOuterClass.ServiceConfig.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Slice build() {
-        context.ContextOuterClass.Slice result = buildPartial();
+      public context.ContextOuterClass.ServiceConfig build() {
+        context.ContextOuterClass.ServiceConfig result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -36681,70 +26204,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Slice buildPartial() {
-        context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
+      public context.ContextOuterClass.ServiceConfig buildPartial() {
+        context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
         int from_bitField0_ = bitField0_;
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
-        } else {
-          result.sliceId_ = sliceIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (sliceEndpointIdsBuilder_ == null) {
+        if (configRulesBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
+            configRules_ = java.util.Collections.unmodifiableList(configRules_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.sliceEndpointIds_ = sliceEndpointIds_;
-        } else {
-          result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
-        }
-        if (sliceConstraintsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.sliceConstraints_ = sliceConstraints_;
-        } else {
-          result.sliceConstraints_ = sliceConstraintsBuilder_.build();
-        }
-        if (sliceServiceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.sliceServiceIds_ = sliceServiceIds_;
-        } else {
-          result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
-        }
-        if (sliceSubsliceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000008) != 0)) {
-            sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-            bitField0_ = (bitField0_ & ~0x00000008);
-          }
-          result.sliceSubsliceIds_ = sliceSubsliceIds_;
-        } else {
-          result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
-        }
-        if (sliceStatusBuilder_ == null) {
-          result.sliceStatus_ = sliceStatus_;
-        } else {
-          result.sliceStatus_ = sliceStatusBuilder_.build();
-        }
-        if (sliceConfigBuilder_ == null) {
-          result.sliceConfig_ = sliceConfig_;
-        } else {
-          result.sliceConfig_ = sliceConfigBuilder_.build();
-        }
-        if (sliceOwnerBuilder_ == null) {
-          result.sliceOwner_ = sliceOwner_;
-        } else {
-          result.sliceOwner_ = sliceOwnerBuilder_.build();
-        }
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
+          result.configRules_ = configRules_;
         } else {
-          result.timestamp_ = timestampBuilder_.build();
+          result.configRules_ = configRulesBuilder_.build();
         }
         onBuilt();
         return result;
@@ -36784,139 +26254,42 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Slice) {
-          return mergeFrom((context.ContextOuterClass.Slice)other);
+        if (other instanceof context.ContextOuterClass.ServiceConfig) {
+          return mergeFrom((context.ContextOuterClass.ServiceConfig)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_;
-          onChanged();
-        }
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (!other.sliceEndpointIds_.isEmpty()) {
-            if (sliceEndpointIds_.isEmpty()) {
-              sliceEndpointIds_ = other.sliceEndpointIds_;
+      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 {
-              ensureSliceEndpointIdsIsMutable();
-              sliceEndpointIds_.addAll(other.sliceEndpointIds_);
+              ensureConfigRulesIsMutable();
+              configRules_.addAll(other.configRules_);
             }
             onChanged();
           }
         } else {
-          if (!other.sliceEndpointIds_.isEmpty()) {
-            if (sliceEndpointIdsBuilder_.isEmpty()) {
-              sliceEndpointIdsBuilder_.dispose();
-              sliceEndpointIdsBuilder_ = null;
-              sliceEndpointIds_ = other.sliceEndpointIds_;
+          if (!other.configRules_.isEmpty()) {
+            if (configRulesBuilder_.isEmpty()) {
+              configRulesBuilder_.dispose();
+              configRulesBuilder_ = null;
+              configRules_ = other.configRules_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              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_ & ~0x00000002);
-            } else {
-              ensureSliceConstraintsIsMutable();
-              sliceConstraints_.addAll(other.sliceConstraints_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceConstraints_.isEmpty()) {
-            if (sliceConstraintsBuilder_.isEmpty()) {
-              sliceConstraintsBuilder_.dispose();
-              sliceConstraintsBuilder_ = null;
-              sliceConstraints_ = other.sliceConstraints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              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_ & ~0x00000004);
-            } else {
-              ensureSliceServiceIdsIsMutable();
-              sliceServiceIds_.addAll(other.sliceServiceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceServiceIds_.isEmpty()) {
-            if (sliceServiceIdsBuilder_.isEmpty()) {
-              sliceServiceIdsBuilder_.dispose();
-              sliceServiceIdsBuilder_ = null;
-              sliceServiceIds_ = other.sliceServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              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_ & ~0x00000008);
-            } else {
-              ensureSliceSubsliceIdsIsMutable();
-              sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceSubsliceIds_.isEmpty()) {
-            if (sliceSubsliceIdsBuilder_.isEmpty()) {
-              sliceSubsliceIdsBuilder_.dispose();
-              sliceSubsliceIdsBuilder_ = null;
-              sliceSubsliceIds_ = other.sliceSubsliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000008);
-              sliceSubsliceIdsBuilder_ = 
+              configRulesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceSubsliceIdsFieldBuilder() : null;
+                   getConfigRulesFieldBuilder() : null;
             } else {
-              sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
+              configRulesBuilder_.addAllMessages(other.configRules_);
             }
           }
         }
-        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.unknownFields);
         onChanged();
         return this;
@@ -36932,11 +26305,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.Slice parsedMessage = null;
+        context.ContextOuterClass.ServiceConfig parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -36947,1635 +26320,1830 @@ public final class ContextOuterClass {
       }
       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 sliceIdBuilder_ != null || sliceId_ != null;
+      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>.context.SliceId slice_id = 1;</code>
-       * @return The sliceId.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+        if (configRulesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(configRules_);
         } else {
-          return sliceIdBuilder_.getMessage();
+          return configRulesBuilder_.getMessageList();
         }
       }
       /**
-       * <code>.context.SliceId slice_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
-          onChanged();
+      public int getConfigRulesCount() {
+        if (configRulesBuilder_ == null) {
+          return configRules_.size();
         } else {
-          sliceIdBuilder_.setMessage(value);
+          return configRulesBuilder_.getCount();
         }
-
-        return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
-          onChanged();
+      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+        if (configRulesBuilder_ == null) {
+          return configRules_.get(index);
         } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
+          return configRulesBuilder_.getMessage(index);
         }
-
-        return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
+      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 {
-          sliceIdBuilder_.mergeFrom(value);
+          configRulesBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
+      public Builder setConfigRules(
+          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.set(index, builderForValue.build());
           onChanged();
         } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
+          configRulesBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        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.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      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;
+      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
+        if (configRulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureConfigRulesIsMutable();
+          configRules_.add(value);
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          configRulesBuilder_.addMessage(value);
         }
-      }
-      /**
-       * <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;
-        onChanged();
         return this;
       }
       /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        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;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      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>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (sliceEndpointIdsBuilder_ == null) {
+      public Builder addConfigRules(
+          int index, context.ContextOuterClass.ConfigRule value) {
+        if (configRulesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.set(index, value);
+          ensureConfigRulesIsMutable();
+          configRules_.add(index, value);
           onChanged();
         } else {
-          sliceEndpointIdsBuilder_.setMessage(index, value);
+          configRulesBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.set(index, builderForValue.build());
+      public Builder addConfigRules(
+          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.add(builderForValue.build());
           onChanged();
         } else {
-          sliceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
+          configRulesBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(value);
+      public Builder addConfigRules(
+          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.add(index, builderForValue.build());
           onChanged();
         } else {
-          sliceEndpointIdsBuilder_.addMessage(value);
+          configRulesBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder addSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(index, value);
+      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 {
-          sliceEndpointIdsBuilder_.addMessage(index, value);
+          configRulesBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder addSliceEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(builderForValue.build());
+      public Builder clearConfigRules() {
+        if (configRulesBuilder_ == null) {
+          configRules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          sliceEndpointIdsBuilder_.addMessage(builderForValue.build());
+          configRulesBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder addSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(index, builderForValue.build());
+      public Builder removeConfigRules(int index) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.remove(index);
           onChanged();
         } else {
-          sliceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
+          configRulesBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</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();
+      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 {
-          sliceEndpointIdsBuilder_.addAllMessages(values);
+          return java.util.Collections.unmodifiableList(configRules_);
         }
-        return this;
       }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder clearSliceEndpointIds() {
-        if (sliceEndpointIdsBuilder_ == null) {
-          sliceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.clear();
-        }
-        return this;
+      /**
+       * <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 {
+        return new ServiceConfig(input, extensionRegistry);
+      }
+    };
+
+    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();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ServiceIdList(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              serviceIds_.add(
+                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    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;
+    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));
+      }
+      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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);
       }
-      /**
-       * <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;
+
+      // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getSliceEndpointIdsBuilder(
-          int index) {
-        return getSliceEndpointIdsFieldBuilder().getBuilder(index);
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <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);
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getServiceIdsFieldBuilder();
         }
       }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getSliceEndpointIdsOrBuilderList() {
-        if (sliceEndpointIdsBuilder_ != null) {
-          return sliceEndpointIdsBuilder_.getMessageOrBuilderList();
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (serviceIdsBuilder_ == null) {
+          serviceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } 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_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceEndpointIds_ = null;
+          serviceIdsBuilder_.clear();
         }
-        return sliceEndpointIdsBuilder_;
+        return this;
       }
 
-      private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceConstraintsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
-          bitField0_ |= 0x00000002;
-         }
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
       }
 
-      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();
-        }
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
+        return context.ContextOuterClass.ServiceIdList.getDefaultInstance();
       }
-      /**
-       * <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);
+
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceIdList build() {
+        context.ContextOuterClass.ServiceIdList result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
         }
+        return result;
       }
-      /**
-       * <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();
+
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceIdList buildPartial() {
+        context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
+        int from_bitField0_ = bitField0_;
+        if (serviceIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
           }
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.set(index, value);
-          onChanged();
+          result.serviceIds_ = serviceIds_;
         } else {
-          sliceConstraintsBuilder_.setMessage(index, value);
+          result.serviceIds_ = serviceIdsBuilder_.build();
         }
-        return this;
+        onBuilt();
+        return result;
       }
-      /**
-       * <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;
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder clearSliceConstraints() {
-        if (sliceConstraintsBuilder_ == null) {
-          sliceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.ServiceIdList) {
+          return mergeFrom((context.ContextOuterClass.ServiceIdList)other);
         } else {
-          sliceConstraintsBuilder_.clear();
+          super.mergeFrom(other);
+          return this;
         }
-        return this;
       }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder removeSliceConstraints(int index) {
-        if (sliceConstraintsBuilder_ == null) {
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.remove(index);
-          onChanged();
+
+      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 {
-          sliceConstraintsBuilder_.remove(index);
+          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.unknownFields);
+        onChanged();
         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();
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
-      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_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceConstraints_ = null;
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.ServiceIdList parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
         }
-        return sliceConstraintsBuilder_;
+        return this;
       }
+      private int bitField0_;
 
-      private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ =
+      private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ =
         java.util.Collections.emptyList();
-      private void ensureSliceServiceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
-          bitField0_ |= 0x00000004;
+      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> sliceServiceIdsBuilder_;
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;
 
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
-        if (sliceServiceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceServiceIds_);
+      public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
+        if (serviceIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(serviceIds_);
         } else {
-          return sliceServiceIdsBuilder_.getMessageList();
+          return serviceIdsBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public int getSliceServiceIdsCount() {
-        if (sliceServiceIdsBuilder_ == null) {
-          return sliceServiceIds_.size();
+      public int getServiceIdsCount() {
+        if (serviceIdsBuilder_ == null) {
+          return serviceIds_.size();
         } else {
-          return sliceServiceIdsBuilder_.getCount();
+          return serviceIdsBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
-        if (sliceServiceIdsBuilder_ == null) {
-          return sliceServiceIds_.get(index);
+      public context.ContextOuterClass.ServiceId getServiceIds(int index) {
+        if (serviceIdsBuilder_ == null) {
+          return serviceIds_.get(index);
         } else {
-          return sliceServiceIdsBuilder_.getMessage(index);
+          return serviceIdsBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder setSliceServiceIds(
+      public Builder setServiceIds(
           int index, context.ContextOuterClass.ServiceId value) {
-        if (sliceServiceIdsBuilder_ == null) {
+        if (serviceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.set(index, value);
+          ensureServiceIdsIsMutable();
+          serviceIds_.set(index, value);
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.setMessage(index, value);
+          serviceIdsBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder setSliceServiceIds(
+      public Builder setServiceIds(
           int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.set(index, builderForValue.build());
+        if (serviceIdsBuilder_ == null) {
+          ensureServiceIdsIsMutable();
+          serviceIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.setMessage(index, builderForValue.build());
+          serviceIdsBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId value) {
-        if (sliceServiceIdsBuilder_ == null) {
+      public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(value);
+          ensureServiceIdsIsMutable();
+          serviceIds_.add(value);
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.addMessage(value);
+          serviceIdsBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder addSliceServiceIds(
+      public Builder addServiceIds(
           int index, context.ContextOuterClass.ServiceId value) {
-        if (sliceServiceIdsBuilder_ == null) {
+        if (serviceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(index, value);
+          ensureServiceIdsIsMutable();
+          serviceIds_.add(index, value);
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.addMessage(index, value);
+          serviceIdsBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder addSliceServiceIds(
+      public Builder addServiceIds(
           context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(builderForValue.build());
+        if (serviceIdsBuilder_ == null) {
+          ensureServiceIdsIsMutable();
+          serviceIds_.add(builderForValue.build());
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.addMessage(builderForValue.build());
+          serviceIdsBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder addSliceServiceIds(
+      public Builder addServiceIds(
           int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(index, builderForValue.build());
+        if (serviceIdsBuilder_ == null) {
+          ensureServiceIdsIsMutable();
+          serviceIds_.add(index, builderForValue.build());
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.addMessage(index, builderForValue.build());
+          serviceIdsBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder addAllSliceServiceIds(
+      public Builder addAllServiceIds(
           java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
+        if (serviceIdsBuilder_ == null) {
+          ensureServiceIdsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceServiceIds_);
+              values, serviceIds_);
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.addAllMessages(values);
+          serviceIdsBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder clearSliceServiceIds() {
-        if (sliceServiceIdsBuilder_ == null) {
-          sliceServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
+      public Builder clearServiceIds() {
+        if (serviceIdsBuilder_ == null) {
+          serviceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.clear();
+          serviceIdsBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public Builder removeSliceServiceIds(int index) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.remove(index);
+      public Builder removeServiceIds(int index) {
+        if (serviceIdsBuilder_ == null) {
+          ensureServiceIdsIsMutable();
+          serviceIds_.remove(index);
           onChanged();
         } else {
-          sliceServiceIdsBuilder_.remove(index);
+          serviceIdsBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder getSliceServiceIdsBuilder(
+      public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(
           int index) {
-        return getSliceServiceIdsFieldBuilder().getBuilder(index);
+        return getServiceIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
+      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
           int index) {
-        if (sliceServiceIdsBuilder_ == null) {
-          return sliceServiceIds_.get(index);  } else {
-          return sliceServiceIdsBuilder_.getMessageOrBuilder(index);
+        if (serviceIdsBuilder_ == null) {
+          return serviceIds_.get(index);  } else {
+          return serviceIdsBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
       public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getSliceServiceIdsOrBuilderList() {
-        if (sliceServiceIdsBuilder_ != null) {
-          return sliceServiceIdsBuilder_.getMessageOrBuilderList();
+           getServiceIdsOrBuilderList() {
+        if (serviceIdsBuilder_ != null) {
+          return serviceIdsBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(sliceServiceIds_);
+          return java.util.Collections.unmodifiableList(serviceIds_);
         }
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder() {
-        return getSliceServiceIdsFieldBuilder().addBuilder(
+      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
+        return getServiceIdsFieldBuilder().addBuilder(
             context.ContextOuterClass.ServiceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
-      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder(
+      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
           int index) {
-        return getSliceServiceIdsFieldBuilder().addBuilder(
+        return getServiceIdsFieldBuilder().addBuilder(
             index, context.ContextOuterClass.ServiceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+       * <code>repeated .context.ServiceId service_ids = 1;</code>
        */
       public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
-           getSliceServiceIdsBuilderList() {
-        return getSliceServiceIdsFieldBuilder().getBuilderList();
+           getServiceIdsBuilderList() {
+        return getServiceIdsFieldBuilder().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<
+          getServiceIdsFieldBuilder() {
+        if (serviceIdsBuilder_ == null) {
+          serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  sliceServiceIds_,
-                  ((bitField0_ & 0x00000004) != 0),
+                  serviceIds_,
+                  ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
                   isClean());
-          sliceServiceIds_ = null;
+          serviceIds_ = null;
         }
-        return sliceServiceIdsBuilder_;
+        return serviceIdsBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
       }
 
-      private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceSubsliceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000008) != 0)) {
-          sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
-          bitField0_ |= 0x00000008;
-         }
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
       }
 
-      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();
-        }
+      // @@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 {
+        return new ServiceIdList(input, extensionRegistry);
       }
-      /**
-       * <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);
-        }
+    };
+
+    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();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ServiceList(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
       }
-      /**
-       * <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();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                services_ = new java.util.ArrayList<context.ContextOuterClass.Service>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              services_.add(
+                  input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
           }
-          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());
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          services_ = java.util.Collections.unmodifiableList(services_);
         }
-        return this;
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
       }
-      /**
-       * <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;
+    }
+    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;
+    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));
+      }
+      unknownFields.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 += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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;
       }
-      /**
-       * <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;
+
+      @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);
       }
-      /**
-       * <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;
+
+      // Construct using context.ContextOuterClass.ServiceList.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <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;
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <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);
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getServicesFieldBuilder();
         }
-        return this;
       }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder clearSliceSubsliceIds() {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          sliceSubsliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
-          onChanged();
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (servicesBuilder_ == null) {
+          services_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          sliceSubsliceIdsBuilder_.clear();
+          servicesBuilder_.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;
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
       }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceSubsliceIdsBuilder(
-          int index) {
-        return getSliceSubsliceIdsFieldBuilder().getBuilder(index);
+
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
+        return context.ContextOuterClass.ServiceList.getDefaultInstance();
       }
-      /**
-       * <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);
+
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceList build() {
+        context.ContextOuterClass.ServiceList result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
         }
+        return result;
       }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-           getSliceSubsliceIdsOrBuilderList() {
-        if (sliceSubsliceIdsBuilder_ != null) {
-          return sliceSubsliceIdsBuilder_.getMessageOrBuilderList();
+
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceList buildPartial() {
+        context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
+        int from_bitField0_ = bitField0_;
+        if (servicesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            services_ = java.util.Collections.unmodifiableList(services_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.services_ = services_;
         } else {
-          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+          result.services_ = servicesBuilder_.build();
         }
+        onBuilt();
+        return result;
       }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder() {
-        return getSliceSubsliceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.SliceId.getDefaultInstance());
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <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());
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
-           getSliceSubsliceIdsBuilderList() {
-        return getSliceSubsliceIdsFieldBuilder().getBuilderList();
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      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_ & 0x00000008) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceSubsliceIds_ = null;
-        }
-        return sliceSubsliceIdsBuilder_;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-
-      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 sliceStatusBuilder_ != null || sliceStatus_ != null;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-      /**
-       * <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();
-        }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <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;
-          onChanged();
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.ServiceList) {
+          return mergeFrom((context.ContextOuterClass.ServiceList)other);
         } else {
-          sliceStatusBuilder_.setMessage(value);
+          super.mergeFrom(other);
+          return this;
         }
-
-        return this;
       }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder setSliceStatus(
-          context.ContextOuterClass.SliceStatus.Builder builderForValue) {
-        if (sliceStatusBuilder_ == null) {
-          sliceStatus_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceStatusBuilder_.setMessage(builderForValue.build());
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
-        if (sliceStatusBuilder_ == null) {
-          if (sliceStatus_ != null) {
-            sliceStatus_ =
-              context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
-          } else {
-            sliceStatus_ = value;
+      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();
           }
-          onChanged();
         } else {
-          sliceStatusBuilder_.mergeFrom(value);
+          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.unknownFields);
+        onChanged();
         return this;
       }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder clearSliceStatus() {
-        if (sliceStatusBuilder_ == null) {
-          sliceStatus_ = null;
-          onChanged();
-        } else {
-          sliceStatus_ = null;
-          sliceStatusBuilder_ = null;
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
-        
-        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_;
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
 
-      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 sliceConfigBuilder_ != null || sliceConfig_ != null;
-      }
-      /**
-       * <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();
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.ServiceList parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
-          sliceConfig_ = value;
-          onChanged();
-        } else {
-          sliceConfigBuilder_.setMessage(value);
         }
-
         return this;
       }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder setSliceConfig(
-          context.ContextOuterClass.SliceConfig.Builder builderForValue) {
-        if (sliceConfigBuilder_ == null) {
-          sliceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceConfigBuilder_.setMessage(builderForValue.build());
-        }
+      private int bitField0_;
 
-        return this;
+      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;
+         }
       }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
-        if (sliceConfigBuilder_ == null) {
-          if (sliceConfig_ != null) {
-            sliceConfig_ =
-              context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            sliceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          sliceConfigBuilder_.mergeFrom(value);
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder clearSliceConfig() {
-        if (sliceConfigBuilder_ == null) {
-          sliceConfig_ = null;
-          onChanged();
-        } else {
-          sliceConfig_ = null;
-          sliceConfigBuilder_ = null;
-        }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> servicesBuilder_;
 
-        return this;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
-        
-        onChanged();
-        return getSliceConfigFieldBuilder().getBuilder();
-      }
       /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-        if (sliceConfigBuilder_ != null) {
-          return sliceConfigBuilder_.getMessageOrBuilder();
+      public java.util.List<context.ContextOuterClass.Service> getServicesList() {
+        if (servicesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(services_);
         } else {
-          return sliceConfig_ == null ?
-              context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+          return servicesBuilder_.getMessageList();
         }
       }
       /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
+       * <code>repeated .context.Service services = 1;</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;
+      public int getServicesCount() {
+        if (servicesBuilder_ == null) {
+          return services_.size();
+        } else {
+          return servicesBuilder_.getCount();
         }
-        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 sliceOwnerBuilder_ != null || sliceOwner_ != null;
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       * @return The sliceOwner.
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public context.ContextOuterClass.SliceOwner getSliceOwner() {
-        if (sliceOwnerBuilder_ == null) {
-          return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+      public context.ContextOuterClass.Service getServices(int index) {
+        if (servicesBuilder_ == null) {
+          return services_.get(index);
         } else {
-          return sliceOwnerBuilder_.getMessage();
+          return servicesBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder setSliceOwner(context.ContextOuterClass.SliceOwner value) {
-        if (sliceOwnerBuilder_ == null) {
+      public Builder setServices(
+          int index, context.ContextOuterClass.Service value) {
+        if (servicesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          sliceOwner_ = value;
+          ensureServicesIsMutable();
+          services_.set(index, value);
           onChanged();
         } else {
-          sliceOwnerBuilder_.setMessage(value);
+          servicesBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder setSliceOwner(
-          context.ContextOuterClass.SliceOwner.Builder builderForValue) {
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwner_ = builderForValue.build();
+      public Builder setServices(
+          int index, context.ContextOuterClass.Service.Builder builderForValue) {
+        if (servicesBuilder_ == null) {
+          ensureServicesIsMutable();
+          services_.set(index, builderForValue.build());
           onChanged();
         } else {
-          sliceOwnerBuilder_.setMessage(builderForValue.build());
+          servicesBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
-        if (sliceOwnerBuilder_ == null) {
-          if (sliceOwner_ != null) {
-            sliceOwner_ =
-              context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
-          } else {
-            sliceOwner_ = value;
+      public Builder addServices(context.ContextOuterClass.Service value) {
+        if (servicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureServicesIsMutable();
+          services_.add(value);
           onChanged();
         } else {
-          sliceOwnerBuilder_.mergeFrom(value);
+          servicesBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder clearSliceOwner() {
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwner_ = null;
+      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 {
-          sliceOwner_ = null;
-          sliceOwnerBuilder_ = null;
+          servicesBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
-        
-        onChanged();
-        return getSliceOwnerFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-        if (sliceOwnerBuilder_ != null) {
-          return sliceOwnerBuilder_.getMessageOrBuilder();
+      public Builder addServices(
+          context.ContextOuterClass.Service.Builder builderForValue) {
+        if (servicesBuilder_ == null) {
+          ensureServicesIsMutable();
+          services_.add(builderForValue.build());
+          onChanged();
         } else {
-          return sliceOwner_ == null ?
-              context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+          servicesBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
+       * <code>repeated .context.Service services = 1;</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;
+      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 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 timestampBuilder_ != null || timestamp_ != null;
+        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       * @return The timestamp.
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+      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 {
-          return timestampBuilder_.getMessage();
+          servicesBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
+      public Builder clearServices() {
+        if (servicesBuilder_ == null) {
+          services_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          timestampBuilder_.setMessage(value);
+          servicesBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
+      public Builder removeServices(int index) {
+        if (servicesBuilder_ == null) {
+          ensureServicesIsMutable();
+          services_.remove(index);
           onChanged();
         } else {
-          timestampBuilder_.setMessage(builderForValue.build());
+          servicesBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
+      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);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
+      public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
+           getServicesOrBuilderList() {
+        if (servicesBuilder_ != null) {
+          return servicesBuilder_.getMessageOrBuilderList();
         } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
+          return java.util.Collections.unmodifiableList(services_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
+      public context.ContextOuterClass.Service.Builder addServicesBuilder() {
+        return getServicesFieldBuilder().addBuilder(
+            context.ContextOuterClass.Service.getDefaultInstance());
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 1;</code>
        */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
+      public context.ContextOuterClass.Service.Builder addServicesBuilder(
+          int index) {
+        return getServicesFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Service.getDefaultInstance());
       }
       /**
-       * <code>.context.Timestamp timestamp = 10;</code>
+       * <code>repeated .context.Service services = 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(),
+      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());
-          timestamp_ = null;
+          services_ = null;
         }
-        return timestampBuilder_;
+        return servicesBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -38590,98 +28158,100 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.Slice)
+      // @@protoc_insertion_point(builder_scope:context.ServiceList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Slice)
-    private static final context.ContextOuterClass.Slice DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ServiceList)
+    private static final context.ContextOuterClass.ServiceList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Slice();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceList();
     }
 
-    public static context.ContextOuterClass.Slice getDefaultInstance() {
+    public static context.ContextOuterClass.ServiceList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<Slice>
-        PARSER = new com.google.protobuf.AbstractParser<Slice>() {
+    private static final com.google.protobuf.Parser<ServiceList>
+        PARSER = new com.google.protobuf.AbstractParser<ServiceList>() {
       @java.lang.Override
-      public Slice parsePartialFrom(
+      public ServiceList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Slice(input, extensionRegistry);
+        return new ServiceList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Slice> parser() {
+    public static com.google.protobuf.Parser<ServiceList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Slice> getParserForType() {
+    public com.google.protobuf.Parser<ServiceList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.Slice getDefaultInstanceForType() {
+    public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceOwnerOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceOwner)
+  public interface ServiceEventOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ServiceEvent)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return Whether the ownerUuid field is set.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
-    boolean hasOwnerUuid();
+    boolean hasEvent();
     /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return The ownerUuid.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
-    context.ContextOuterClass.Uuid getOwnerUuid();
+    context.ContextOuterClass.Event getEvent();
     /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder();
+    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
 
     /**
-     * <code>string owner_string = 2;</code>
-     * @return The ownerString.
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return Whether the serviceId field is set.
      */
-    java.lang.String getOwnerString();
+    boolean hasServiceId();
     /**
-     * <code>string owner_string = 2;</code>
-     * @return The bytes for ownerString.
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return The serviceId.
      */
-    com.google.protobuf.ByteString
-        getOwnerStringBytes();
+    context.ContextOuterClass.ServiceId getServiceId();
+    /**
+     * <code>.context.ServiceId service_id = 2;</code>
+     */
+    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
   }
   /**
-   * Protobuf type {@code context.SliceOwner}
+   * Protobuf type {@code context.ServiceEvent}
    */
-  public static final class SliceOwner extends
+  public static final class ServiceEvent extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceOwner)
-      SliceOwnerOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ServiceEvent)
+      ServiceEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceOwner.newBuilder() to construct.
-    private SliceOwner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ServiceEvent.newBuilder() to construct.
+    private ServiceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceOwner() {
-      ownerString_ = "";
+    private ServiceEvent() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SliceOwner();
+      return new ServiceEvent();
     }
 
     @java.lang.Override
@@ -38689,7 +28259,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceOwner(
+    private ServiceEvent(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -38708,22 +28278,29 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (ownerUuid_ != null) {
-                subBuilder = ownerUuid_.toBuilder();
+              context.ContextOuterClass.Event.Builder subBuilder = null;
+              if (event_ != null) {
+                subBuilder = event_.toBuilder();
               }
-              ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(ownerUuid_);
-                ownerUuid_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(event_);
+                event_ = subBuilder.buildPartial();
               }
 
               break;
             }
             case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
+              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+              if (serviceId_ != null) {
+                subBuilder = serviceId_.toBuilder();
+              }
+              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(serviceId_);
+                serviceId_ = subBuilder.buildPartial();
+              }
 
-              ownerString_ = s;
               break;
             }
             default: {
@@ -38747,79 +28324,67 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
+      return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
+              context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
     }
 
-    public static final int OWNER_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid ownerUuid_;
+    public static final int EVENT_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Event event_;
     /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return Whether the ownerUuid field is set.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
     @java.lang.Override
-    public boolean hasOwnerUuid() {
-      return ownerUuid_ != null;
+    public boolean hasEvent() {
+      return event_ != null;
     }
     /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return The ownerUuid.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getOwnerUuid() {
-      return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+    public context.ContextOuterClass.Event getEvent() {
+      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
     /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
+     * <code>.context.Event event = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-      return getOwnerUuid();
+    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+      return getEvent();
     }
 
-    public static final int OWNER_STRING_FIELD_NUMBER = 2;
-    private volatile java.lang.Object ownerString_;
+    public static final int SERVICE_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.ServiceId serviceId_;
     /**
-     * <code>string owner_string = 2;</code>
-     * @return The ownerString.
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return Whether the serviceId field is set.
      */
     @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;
-      }
+    public boolean hasServiceId() {
+      return serviceId_ != null;
     }
     /**
-     * <code>string owner_string = 2;</code>
-     * @return The bytes for ownerString.
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return The serviceId.
      */
     @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;
-      }
+    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 getServiceId();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -38836,11 +28401,11 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (ownerUuid_ != null) {
-        output.writeMessage(1, getOwnerUuid());
+      if (event_ != null) {
+        output.writeMessage(1, getEvent());
       }
-      if (!getOwnerStringBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
+      if (serviceId_ != null) {
+        output.writeMessage(2, getServiceId());
       }
       unknownFields.writeTo(output);
     }
@@ -38851,12 +28416,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (ownerUuid_ != null) {
+      if (event_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getOwnerUuid());
+          .computeMessageSize(1, getEvent());
       }
-      if (!getOwnerStringBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
+      if (serviceId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getServiceId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -38868,18 +28434,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceOwner)) {
+      if (!(obj instanceof context.ContextOuterClass.ServiceEvent)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.SliceOwner other = (context.ContextOuterClass.SliceOwner) obj;
+      context.ContextOuterClass.ServiceEvent other = (context.ContextOuterClass.ServiceEvent) obj;
 
-      if (hasOwnerUuid() != other.hasOwnerUuid()) return false;
-      if (hasOwnerUuid()) {
-        if (!getOwnerUuid()
-            .equals(other.getOwnerUuid())) return false;
+      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 (!getOwnerString()
-          .equals(other.getOwnerString())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -38891,80 +28460,82 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasOwnerUuid()) {
-        hash = (37 * hash) + OWNER_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getOwnerUuid().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 = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
-      hash = (53 * hash) + getOwnerString().hashCode();
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceOwner parseFrom(
+    public static context.ContextOuterClass.ServiceEvent parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
+    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.SliceOwner parseFrom(
+    public static context.ContextOuterClass.ServiceEvent parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
+    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.SliceOwner parseFrom(byte[] data)
+    public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
+    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.SliceOwner parseFrom(java.io.InputStream input)
+    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.SliceOwner parseFrom(
+    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.SliceOwner parseDelimitedFrom(java.io.InputStream input)
+    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.SliceOwner parseDelimitedFrom(
+    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.SliceOwner parseFrom(
+    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.SliceOwner parseFrom(
+    public static context.ContextOuterClass.ServiceEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -38977,7 +28548,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceOwner prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ServiceEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -38993,26 +28564,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.SliceOwner}
+     * Protobuf type {@code context.ServiceEvent}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceOwner)
-        context.ContextOuterClass.SliceOwnerOrBuilder {
+        // @@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_SliceOwner_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
+                context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
+      // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -39030,31 +28601,35 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (ownerUuidBuilder_ == null) {
-          ownerUuid_ = null;
+        if (eventBuilder_ == null) {
+          event_ = null;
+        } else {
+          event_ = null;
+          eventBuilder_ = null;
+        }
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
         } else {
-          ownerUuid_ = null;
-          ownerUuidBuilder_ = null;
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
         }
-        ownerString_ = "";
-
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
+        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceOwner.getDefaultInstance();
+      public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
+        return context.ContextOuterClass.ServiceEvent.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceOwner build() {
-        context.ContextOuterClass.SliceOwner result = buildPartial();
+      public context.ContextOuterClass.ServiceEvent build() {
+        context.ContextOuterClass.ServiceEvent result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -39062,14 +28637,18 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceOwner buildPartial() {
-        context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
-        if (ownerUuidBuilder_ == null) {
-          result.ownerUuid_ = ownerUuid_;
+      public context.ContextOuterClass.ServiceEvent buildPartial() {
+        context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
+        if (eventBuilder_ == null) {
+          result.event_ = event_;
         } else {
-          result.ownerUuid_ = ownerUuidBuilder_.build();
+          result.event_ = eventBuilder_.build();
+        }
+        if (serviceIdBuilder_ == null) {
+          result.serviceId_ = serviceId_;
+        } else {
+          result.serviceId_ = serviceIdBuilder_.build();
         }
-        result.ownerString_ = ownerString_;
         onBuilt();
         return result;
       }
@@ -39108,22 +28687,21 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceOwner) {
-          return mergeFrom((context.ContextOuterClass.SliceOwner)other);
+        if (other instanceof context.ContextOuterClass.ServiceEvent) {
+          return mergeFrom((context.ContextOuterClass.ServiceEvent)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());
+      public Builder mergeFrom(context.ContextOuterClass.ServiceEvent other) {
+        if (other == context.ContextOuterClass.ServiceEvent.getDefaultInstance()) return this;
+        if (other.hasEvent()) {
+          mergeEvent(other.getEvent());
         }
-        if (!other.getOwnerString().isEmpty()) {
-          ownerString_ = other.ownerString_;
-          onChanged();
+        if (other.hasServiceId()) {
+          mergeServiceId(other.getServiceId());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -39140,11 +28718,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.SliceOwner parsedMessage = null;
+        context.ContextOuterClass.ServiceEvent parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -39154,199 +28732,242 @@ public final class ContextOuterClass {
         return this;
       }
 
-      private context.ContextOuterClass.Uuid ownerUuid_;
+      private context.ContextOuterClass.Event event_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
+          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       * @return Whether the ownerUuid field is set.
+       * <code>.context.Event event = 1;</code>
+       * @return Whether the event field is set.
        */
-      public boolean hasOwnerUuid() {
-        return ownerUuidBuilder_ != null || ownerUuid_ != null;
+      public boolean hasEvent() {
+        return eventBuilder_ != null || event_ != null;
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       * @return The ownerUuid.
+       * <code>.context.Event event = 1;</code>
+       * @return The event.
        */
-      public context.ContextOuterClass.Uuid getOwnerUuid() {
-        if (ownerUuidBuilder_ == null) {
-          return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+      public context.ContextOuterClass.Event getEvent() {
+        if (eventBuilder_ == null) {
+          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         } else {
-          return ownerUuidBuilder_.getMessage();
+          return eventBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setOwnerUuid(context.ContextOuterClass.Uuid value) {
-        if (ownerUuidBuilder_ == null) {
+      public Builder setEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ownerUuid_ = value;
+          event_ = value;
           onChanged();
         } else {
-          ownerUuidBuilder_.setMessage(value);
+          eventBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setOwnerUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (ownerUuidBuilder_ == null) {
-          ownerUuid_ = builderForValue.build();
+      public Builder setEvent(
+          context.ContextOuterClass.Event.Builder builderForValue) {
+        if (eventBuilder_ == null) {
+          event_ = builderForValue.build();
           onChanged();
         } else {
-          ownerUuidBuilder_.setMessage(builderForValue.build());
+          eventBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
-        if (ownerUuidBuilder_ == null) {
-          if (ownerUuid_ != null) {
-            ownerUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
+      public Builder mergeEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (event_ != null) {
+            event_ =
+              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
           } else {
-            ownerUuid_ = value;
+            event_ = value;
           }
           onChanged();
         } else {
-          ownerUuidBuilder_.mergeFrom(value);
+          eventBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder clearOwnerUuid() {
-        if (ownerUuidBuilder_ == null) {
-          ownerUuid_ = null;
+      public Builder clearEvent() {
+        if (eventBuilder_ == null) {
+          event_ = null;
           onChanged();
         } else {
-          ownerUuid_ = null;
-          ownerUuidBuilder_ = null;
+          event_ = null;
+          eventBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
+      public context.ContextOuterClass.Event.Builder getEventBuilder() {
         
         onChanged();
-        return getOwnerUuidFieldBuilder().getBuilder();
+        return getEventFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-        if (ownerUuidBuilder_ != null) {
-          return ownerUuidBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+        if (eventBuilder_ != null) {
+          return eventBuilder_.getMessageOrBuilder();
         } else {
-          return ownerUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+          return event_ == null ?
+              context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
       }
       /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
+       * <code>.context.Event event = 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(),
+          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());
-          ownerUuid_ = null;
+          event_ = null;
         }
-        return ownerUuidBuilder_;
+        return eventBuilder_;
       }
 
-      private java.lang.Object ownerString_ = "";
+      private context.ContextOuterClass.ServiceId serviceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
       /**
-       * <code>string owner_string = 2;</code>
-       * @return The ownerString.
+       * <code>.context.ServiceId service_id = 2;</code>
+       * @return Whether the serviceId field is set.
        */
-      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;
+      public boolean hasServiceId() {
+        return serviceIdBuilder_ != null || serviceId_ != null;
+      }
+      /**
+       * <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 (java.lang.String) ref;
+          return serviceIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>string owner_string = 2;</code>
-       * @return The bytes for ownerString.
+       * <code>.context.ServiceId service_id = 2;</code>
        */
-      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;
+      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          serviceId_ = value;
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          serviceIdBuilder_.setMessage(value);
         }
+
+        return this;
       }
       /**
-       * <code>string owner_string = 2;</code>
-       * @param value The ownerString to set.
-       * @return This builder for chaining.
+       * <code>.context.ServiceId service_id = 2;</code>
        */
-      public Builder setOwnerString(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        ownerString_ = value;
-        onChanged();
+      public Builder setServiceId(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
       /**
-       * <code>string owner_string = 2;</code>
-       * @return This builder for chaining.
+       * <code>.context.ServiceId service_id = 2;</code>
        */
-      public Builder clearOwnerString() {
-        
-        ownerString_ = getDefaultInstance().getOwnerString();
-        onChanged();
+      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (serviceId_ != null) {
+            serviceId_ =
+              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+          } else {
+            serviceId_ = value;
+          }
+          onChanged();
+        } else {
+          serviceIdBuilder_.mergeFrom(value);
+        }
+
         return this;
       }
       /**
-       * <code>string owner_string = 2;</code>
-       * @param value The bytes for ownerString to set.
-       * @return This builder for chaining.
+       * <code>.context.ServiceId service_id = 2;</code>
        */
-      public Builder setOwnerStringBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
+      public Builder clearServiceId() {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
+          onChanged();
+        } else {
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 2;</code>
+       */
+      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
         
-        ownerString_ = value;
         onChanged();
-        return this;
+        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(
@@ -39361,82 +28982,104 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceOwner)
+      // @@protoc_insertion_point(builder_scope:context.ServiceEvent)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceOwner)
-    private static final context.ContextOuterClass.SliceOwner DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ServiceEvent)
+    private static final context.ContextOuterClass.ServiceEvent DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceOwner();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceEvent();
     }
 
-    public static context.ContextOuterClass.SliceOwner getDefaultInstance() {
+    public static context.ContextOuterClass.ServiceEvent getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceOwner>
-        PARSER = new com.google.protobuf.AbstractParser<SliceOwner>() {
+    private static final com.google.protobuf.Parser<ServiceEvent>
+        PARSER = new com.google.protobuf.AbstractParser<ServiceEvent>() {
       @java.lang.Override
-      public SliceOwner parsePartialFrom(
+      public ServiceEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceOwner(input, extensionRegistry);
+        return new ServiceEvent(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceOwner> parser() {
+    public static com.google.protobuf.Parser<ServiceEvent> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceOwner> getParserForType() {
+    public com.google.protobuf.Parser<ServiceEvent> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
+    public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceStatusOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceStatus)
+  public interface SliceIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceId)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The enum numeric value on the wire for sliceStatus.
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return Whether the contextId field is set.
      */
-    int getSliceStatusValue();
+    boolean hasContextId();
     /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The sliceStatus.
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return The contextId.
      */
-    context.ContextOuterClass.SliceStatusEnum getSliceStatus();
+    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();
   }
   /**
-   * Protobuf type {@code context.SliceStatus}
+   * <pre>
+   * ----- Slice ---------------------------------------------------------------------------------------------------------
+   * </pre>
+   *
+   * Protobuf type {@code context.SliceId}
    */
-  public static final class SliceStatus extends
+  public static final class SliceId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceStatus)
-      SliceStatusOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceId)
+      SliceIdOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceStatus.newBuilder() to construct.
-    private SliceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceId.newBuilder() to construct.
+    private SliceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceStatus() {
-      sliceStatus_ = 0;
+    private SliceId() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SliceStatus();
+      return new SliceId();
     }
 
     @java.lang.Override
@@ -39444,7 +29087,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceStatus(
+    private SliceId(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -39462,10 +29105,30 @@ public final class ContextOuterClass {
             case 0:
               done = true;
               break;
-            case 8: {
-              int rawValue = input.readEnum();
+            case 10: {
+              context.ContextOuterClass.ContextId.Builder subBuilder = null;
+              if (contextId_ != null) {
+                subBuilder = contextId_.toBuilder();
+              }
+              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(contextId_);
+                contextId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (sliceUuid_ != null) {
+                subBuilder = sliceUuid_.toBuilder();
+              }
+              sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(sliceUuid_);
+                sliceUuid_ = subBuilder.buildPartial();
+              }
 
-              sliceStatus_ = rawValue;
               break;
             }
             default: {
@@ -39489,34 +29152,67 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
+              context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
     }
 
-    public static final int SLICE_STATUS_FIELD_NUMBER = 1;
-    private int sliceStatus_;
+    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.ContextId contextId_;
     /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The enum numeric value on the wire for sliceStatus.
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return Whether the contextId field is set.
      */
-    @java.lang.Override public int getSliceStatusValue() {
-      return sliceStatus_;
+    @java.lang.Override
+    public boolean hasContextId() {
+      return contextId_ != null;
     }
     /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The sliceStatus.
+     * <code>.context.ContextId context_id = 1;</code>
+     * @return The contextId.
      */
-    @java.lang.Override public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
-      return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
+    @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 getContextId();
+    }
+
+    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 getSliceUuid();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -39533,8 +29229,11 @@ public final class ContextOuterClass {
     @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_);
+      if (contextId_ != null) {
+        output.writeMessage(1, getContextId());
+      }
+      if (sliceUuid_ != null) {
+        output.writeMessage(2, getSliceUuid());
       }
       unknownFields.writeTo(output);
     }
@@ -39545,9 +29244,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
+      if (contextId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, sliceStatus_);
+          .computeMessageSize(1, getContextId());
+      }
+      if (sliceUuid_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getSliceUuid());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -39559,12 +29262,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceStatus)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceId)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
-
-      if (sliceStatus_ != other.sliceStatus_) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -39576,76 +29288,82 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
-      hash = (53 * hash) + sliceStatus_;
+      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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceStatus parseFrom(
+    public static context.ContextOuterClass.SliceId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
+    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.SliceStatus parseFrom(
+    public static context.ContextOuterClass.SliceId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
+    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.SliceStatus parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
+    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.SliceStatus parseFrom(java.io.InputStream input)
+    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.SliceStatus parseFrom(
+    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.SliceStatus parseDelimitedFrom(java.io.InputStream input)
+    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.SliceStatus parseDelimitedFrom(
+    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.SliceStatus parseFrom(
+    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.SliceStatus parseFrom(
+    public static context.ContextOuterClass.SliceId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -39658,7 +29376,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceStatus prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -39674,26 +29392,30 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.SliceStatus}
+     * <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.SliceStatus)
-        context.ContextOuterClass.SliceStatusOrBuilder {
+        // @@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_SliceStatus_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
+                context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
+      // Construct using context.ContextOuterClass.SliceId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -39711,25 +29433,35 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        sliceStatus_ = 0;
-
+        if (contextIdBuilder_ == null) {
+          contextId_ = null;
+        } else {
+          contextId_ = null;
+          contextIdBuilder_ = null;
+        }
+        if (sliceUuidBuilder_ == null) {
+          sliceUuid_ = null;
+        } else {
+          sliceUuid_ = null;
+          sliceUuidBuilder_ = null;
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceStatus.getDefaultInstance();
+      public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceStatus build() {
-        context.ContextOuterClass.SliceStatus result = buildPartial();
+      public context.ContextOuterClass.SliceId build() {
+        context.ContextOuterClass.SliceId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -39737,9 +29469,18 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceStatus buildPartial() {
-        context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
-        result.sliceStatus_ = sliceStatus_;
+      public context.ContextOuterClass.SliceId buildPartial() {
+        context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
+        if (contextIdBuilder_ == null) {
+          result.contextId_ = contextId_;
+        } else {
+          result.contextId_ = contextIdBuilder_.build();
+        }
+        if (sliceUuidBuilder_ == null) {
+          result.sliceUuid_ = sliceUuid_;
+        } else {
+          result.sliceUuid_ = sliceUuidBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -39778,18 +29519,21 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceStatus) {
-          return mergeFrom((context.ContextOuterClass.SliceStatus)other);
+        if (other instanceof context.ContextOuterClass.SliceId) {
+          return mergeFrom((context.ContextOuterClass.SliceId)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());
+      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.unknownFields);
         onChanged();
@@ -39806,11 +29550,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.SliceStatus parsedMessage = null;
+        context.ContextOuterClass.SliceId parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -39820,58 +29564,242 @@ public final class ContextOuterClass {
         return this;
       }
 
-      private int sliceStatus_ = 0;
+      private context.ContextOuterClass.ContextId contextId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
       /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @return The enum numeric value on the wire for sliceStatus.
+       * <code>.context.ContextId context_id = 1;</code>
+       * @return Whether the contextId field is set.
        */
-      @java.lang.Override public int getSliceStatusValue() {
-        return sliceStatus_;
+      public boolean hasContextId() {
+        return contextIdBuilder_ != null || contextId_ != null;
       }
       /**
-       * <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.
+       * <code>.context.ContextId context_id = 1;</code>
+       * @return The contextId.
        */
-      public Builder setSliceStatusValue(int value) {
-        
-        sliceStatus_ = value;
-        onChanged();
+      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;
+          onChanged();
+        } else {
+          contextIdBuilder_.setMessage(value);
+        }
+
         return this;
       }
       /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @return The sliceStatus.
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      @java.lang.Override
-      public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
-        return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
+      public Builder setContextId(
+          context.ContextOuterClass.ContextId.Builder builderForValue) {
+        if (contextIdBuilder_ == null) {
+          contextId_ = builderForValue.build();
+          onChanged();
+        } else {
+          contextIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
       }
       /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @param value The sliceStatus to set.
-       * @return This builder for chaining.
+       * <code>.context.ContextId context_id = 1;</code>
        */
-      public Builder setSliceStatus(context.ContextOuterClass.SliceStatusEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
+      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+        if (contextIdBuilder_ == null) {
+          if (contextId_ != null) {
+            contextId_ =
+              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+          } else {
+            contextId_ = value;
+          }
+          onChanged();
+        } else {
+          contextIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ContextId context_id = 1;</code>
+       */
+      public Builder clearContextId() {
+        if (contextIdBuilder_ == null) {
+          contextId_ = null;
+          onChanged();
+        } else {
+          contextId_ = null;
+          contextIdBuilder_ = null;
         }
+
+        return this;
+      }
+      /**
+       * <code>.context.ContextId context_id = 1;</code>
+       */
+      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
         
-        sliceStatus_ = value.getNumber();
         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 sliceUuidBuilder_ != null || sliceUuid_ != null;
+      }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          sliceUuidBuilder_.setMessage(value);
+        }
+
         return this;
       }
       /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid slice_uuid = 2;</code>
        */
-      public Builder clearSliceStatus() {
+      public Builder setSliceUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (sliceUuidBuilder_ == null) {
+          sliceUuid_ = builderForValue.build();
+          onChanged();
+        } else {
+          sliceUuidBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Uuid slice_uuid = 2;</code>
+       */
+      public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
+        if (sliceUuidBuilder_ == null) {
+          if (sliceUuid_ != null) {
+            sliceUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
+          } else {
+            sliceUuid_ = value;
+          }
+          onChanged();
+        } else {
+          sliceUuidBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Uuid slice_uuid = 2;</code>
+       */
+      public Builder clearSliceUuid() {
+        if (sliceUuidBuilder_ == null) {
+          sliceUuid_ = null;
+          onChanged();
+        } else {
+          sliceUuid_ = null;
+          sliceUuidBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Uuid slice_uuid = 2;</code>
+       */
+      public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
         
-        sliceStatus_ = 0;
         onChanged();
-        return this;
+        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(
@@ -39886,95 +29814,245 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceStatus)
+      // @@protoc_insertion_point(builder_scope:context.SliceId)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceStatus)
-    private static final context.ContextOuterClass.SliceStatus DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceId)
+    private static final context.ContextOuterClass.SliceId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceStatus();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceId();
     }
 
-    public static context.ContextOuterClass.SliceStatus getDefaultInstance() {
+    public static context.ContextOuterClass.SliceId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceStatus>
-        PARSER = new com.google.protobuf.AbstractParser<SliceStatus>() {
+    private static final com.google.protobuf.Parser<SliceId>
+        PARSER = new com.google.protobuf.AbstractParser<SliceId>() {
       @java.lang.Override
-      public SliceStatus parsePartialFrom(
+      public SliceId parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceStatus(input, extensionRegistry);
+        return new SliceId(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceStatus> parser() {
+    public static com.google.protobuf.Parser<SliceId> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceStatus> getParserForType() {
+    public com.google.protobuf.Parser<SliceId> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceConfig)
+  public interface SliceOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.Slice)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.SliceId slice_id = 1;</code>
+     * @return Whether the sliceId field is set.
      */
-    java.util.List<context.ContextOuterClass.ConfigRule> 
-        getConfigRulesList();
+    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>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    java.util.List<context.ContextOuterClass.EndPointId> 
+        getSliceEndpointIdsList();
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    context.ContextOuterClass.EndPointId getSliceEndpointIds(int index);
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    int getSliceEndpointIdsCount();
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+        getSliceEndpointIdsOrBuilderList();
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    java.util.List<context.ContextOuterClass.Constraint> 
+        getSliceConstraintsList();
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    context.ContextOuterClass.Constraint getSliceConstraints(int index);
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    int getSliceConstraintsCount();
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+        getSliceConstraintsOrBuilderList();
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    java.util.List<context.ContextOuterClass.ServiceId> 
+        getSliceServiceIdsList();
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    context.ContextOuterClass.ServiceId getSliceServiceIds(int index);
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    int getSliceServiceIdsCount();
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
+        getSliceServiceIdsOrBuilderList();
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
+        int index);
+
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    java.util.List<context.ContextOuterClass.SliceId> 
+        getSliceSubsliceIdsList();
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    context.ContextOuterClass.SliceId getSliceSubsliceIds(int index);
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    int getSliceSubsliceIdsCount();
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
+        getSliceSubsliceIdsOrBuilderList();
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
+        int index);
+
+    /**
+     * <code>.context.SliceStatus slice_status = 6;</code>
+     * @return Whether the sliceStatus field is set.
+     */
+    boolean hasSliceStatus();
+    /**
+     * <code>.context.SliceStatus slice_status = 6;</code>
+     * @return The sliceStatus.
+     */
+    context.ContextOuterClass.SliceStatus getSliceStatus();
+    /**
+     * <code>.context.SliceStatus slice_status = 6;</code>
+     */
+    context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder();
+
+    /**
+     * <code>.context.SliceConfig slice_config = 7;</code>
+     * @return Whether the sliceConfig field is set.
+     */
+    boolean hasSliceConfig();
+    /**
+     * <code>.context.SliceConfig slice_config = 7;</code>
+     * @return The sliceConfig.
+     */
+    context.ContextOuterClass.SliceConfig getSliceConfig();
+    /**
+     * <code>.context.SliceConfig slice_config = 7;</code>
+     */
+    context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder();
+
+    /**
+     * <code>.context.SliceOwner slice_owner = 8;</code>
+     * @return Whether the sliceOwner field is set.
+     */
+    boolean hasSliceOwner();
+    /**
+     * <code>.context.SliceOwner slice_owner = 8;</code>
+     * @return The sliceOwner.
+     */
+    context.ContextOuterClass.SliceOwner getSliceOwner();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.SliceOwner slice_owner = 8;</code>
      */
-    context.ContextOuterClass.ConfigRule getConfigRules(int index);
+    context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder();
+
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.Timestamp timestamp = 9;</code>
+     * @return Whether the timestamp field is set.
      */
-    int getConfigRulesCount();
+    boolean hasTimestamp();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.Timestamp timestamp = 9;</code>
+     * @return The timestamp.
      */
-    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList();
+    context.ContextOuterClass.Timestamp getTimestamp();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.Timestamp timestamp = 9;</code>
      */
-    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index);
+    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
   }
   /**
-   * Protobuf type {@code context.SliceConfig}
+   * Protobuf type {@code context.Slice}
    */
-  public static final class SliceConfig extends
+  public static final class Slice extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceConfig)
-      SliceConfigOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Slice)
+      SliceOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceConfig.newBuilder() to construct.
-    private SliceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Slice.newBuilder() to construct.
+    private Slice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceConfig() {
-      configRules_ = java.util.Collections.emptyList();
+    private Slice() {
+      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 SliceConfig();
+      return new Slice();
     }
 
     @java.lang.Override
@@ -39982,7 +30060,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceConfig(
+    private Slice(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -40002,12 +30080,104 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
+              context.ContextOuterClass.SliceId.Builder subBuilder = null;
+              if (sliceId_ != null) {
+                subBuilder = sliceId_.toBuilder();
+              }
+              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(sliceId_);
+                sliceId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              configRules_.add(
-                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+              sliceEndpointIds_.add(
+                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              sliceConstraints_.add(
+                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              sliceServiceIds_.add(
+                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000008) != 0)) {
+                sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              sliceSubsliceIds_.add(
+                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+              break;
+            }
+            case 50: {
+              context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
+              if (sliceStatus_ != null) {
+                subBuilder = sliceStatus_.toBuilder();
+              }
+              sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(sliceStatus_);
+                sliceStatus_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 58: {
+              context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
+              if (sliceConfig_ != null) {
+                subBuilder = sliceConfig_.toBuilder();
+              }
+              sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(sliceConfig_);
+                sliceConfig_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 66: {
+              context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
+              if (sliceOwner_ != null) {
+                subBuilder = sliceOwner_.toBuilder();
+              }
+              sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(sliceOwner_);
+                sliceOwner_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 74: {
+              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+              if (timestamp_ != null) {
+                subBuilder = timestamp_.toBuilder();
+              }
+              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(timestamp_);
+                timestamp_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -40026,7 +30196,16 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          configRules_ = java.util.Collections.unmodifiableList(configRules_);
+          sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) != 0)) {
+          sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
+        }
+        if (((mutable_bitField0_ & 0x00000004) != 0)) {
+          sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
+        }
+        if (((mutable_bitField0_ & 0x00000008) != 0)) {
+          sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -40034,55 +30213,305 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
+      return context.ContextOuterClass.internal_static_context_Slice_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
+              context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
     }
 
-    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
+    public static final int SLICE_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.SliceId sliceId_;
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.SliceId slice_id = 1;</code>
+     * @return Whether the sliceId field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-      return configRules_;
+    public boolean hasSliceId() {
+      return sliceId_ != null;
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.SliceId slice_id = 1;</code>
+     * @return The sliceId.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList() {
-      return configRules_;
+    public context.ContextOuterClass.SliceId getSliceId() {
+      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>.context.SliceId slice_id = 1;</code>
      */
     @java.lang.Override
-    public int getConfigRulesCount() {
-      return configRules_.size();
+    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+      return getSliceId();
     }
+
+    public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 2;
+    private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-      return configRules_.get(index);
+    public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
+      return sliceEndpointIds_;
     }
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
+        getSliceEndpointIdsOrBuilderList() {
+      return sliceEndpointIds_;
+    }
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public int getSliceEndpointIdsCount() {
+      return sliceEndpointIds_.size();
+    }
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
+      return sliceEndpointIds_.get(index);
+    }
+    /**
+     * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
         int index) {
-      return configRules_.get(index);
+      return sliceEndpointIds_.get(index);
+    }
+
+    public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 3;
+    private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
+      return sliceConstraints_;
+    }
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+        getSliceConstraintsOrBuilderList() {
+      return sliceConstraints_;
+    }
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    @java.lang.Override
+    public int getSliceConstraintsCount() {
+      return sliceConstraints_.size();
+    }
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
+      return sliceConstraints_.get(index);
+    }
+    /**
+     * <code>repeated .context.Constraint slice_constraints = 3;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
+        int index) {
+      return sliceConstraints_.get(index);
+    }
+
+    public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 4;
+    private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
+      return sliceServiceIds_;
+    }
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
+        getSliceServiceIdsOrBuilderList() {
+      return sliceServiceIds_;
+    }
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    @java.lang.Override
+    public int getSliceServiceIdsCount() {
+      return sliceServiceIds_.size();
+    }
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
+      return sliceServiceIds_.get(index);
+    }
+    /**
+     * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
+        int index) {
+      return sliceServiceIds_.get(index);
+    }
+
+    public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 5;
+    private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    @java.lang.Override
+    public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
+      return sliceSubsliceIds_;
+    }
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
+        getSliceSubsliceIdsOrBuilderList() {
+      return sliceSubsliceIds_;
+    }
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    @java.lang.Override
+    public int getSliceSubsliceIdsCount() {
+      return sliceSubsliceIds_.size();
+    }
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
+      return sliceSubsliceIds_.get(index);
+    }
+    /**
+     * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
+        int index) {
+      return sliceSubsliceIds_.get(index);
+    }
+
+    public static final int SLICE_STATUS_FIELD_NUMBER = 6;
+    private context.ContextOuterClass.SliceStatus sliceStatus_;
+    /**
+     * <code>.context.SliceStatus slice_status = 6;</code>
+     * @return Whether the sliceStatus field is set.
+     */
+    @java.lang.Override
+    public boolean hasSliceStatus() {
+      return sliceStatus_ != null;
+    }
+    /**
+     * <code>.context.SliceStatus slice_status = 6;</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 = 6;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
+      return getSliceStatus();
+    }
+
+    public static final int SLICE_CONFIG_FIELD_NUMBER = 7;
+    private context.ContextOuterClass.SliceConfig sliceConfig_;
+    /**
+     * <code>.context.SliceConfig slice_config = 7;</code>
+     * @return Whether the sliceConfig field is set.
+     */
+    @java.lang.Override
+    public boolean hasSliceConfig() {
+      return sliceConfig_ != null;
+    }
+    /**
+     * <code>.context.SliceConfig slice_config = 7;</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 = 7;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
+      return getSliceConfig();
+    }
+
+    public static final int SLICE_OWNER_FIELD_NUMBER = 8;
+    private context.ContextOuterClass.SliceOwner sliceOwner_;
+    /**
+     * <code>.context.SliceOwner slice_owner = 8;</code>
+     * @return Whether the sliceOwner field is set.
+     */
+    @java.lang.Override
+    public boolean hasSliceOwner() {
+      return sliceOwner_ != null;
+    }
+    /**
+     * <code>.context.SliceOwner slice_owner = 8;</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 = 8;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
+      return getSliceOwner();
+    }
+
+    public static final int TIMESTAMP_FIELD_NUMBER = 9;
+    private context.ContextOuterClass.Timestamp timestamp_;
+    /**
+     * <code>.context.Timestamp timestamp = 9;</code>
+     * @return Whether the timestamp field is set.
+     */
+    @java.lang.Override
+    public boolean hasTimestamp() {
+      return timestamp_ != null;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 9;</code>
+     * @return The timestamp.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.Timestamp getTimestamp() {
+      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+    }
+    /**
+     * <code>.context.Timestamp timestamp = 9;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+      return getTimestamp();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -40099,8 +30528,32 @@ public final class ContextOuterClass {
     @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));
+      if (sliceId_ != null) {
+        output.writeMessage(1, getSliceId());
+      }
+      for (int i = 0; i < sliceEndpointIds_.size(); i++) {
+        output.writeMessage(2, sliceEndpointIds_.get(i));
+      }
+      for (int i = 0; i < sliceConstraints_.size(); i++) {
+        output.writeMessage(3, sliceConstraints_.get(i));
+      }
+      for (int i = 0; i < sliceServiceIds_.size(); i++) {
+        output.writeMessage(4, sliceServiceIds_.get(i));
+      }
+      for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
+        output.writeMessage(5, sliceSubsliceIds_.get(i));
+      }
+      if (sliceStatus_ != null) {
+        output.writeMessage(6, getSliceStatus());
+      }
+      if (sliceConfig_ != null) {
+        output.writeMessage(7, getSliceConfig());
+      }
+      if (sliceOwner_ != null) {
+        output.writeMessage(8, getSliceOwner());
+      }
+      if (timestamp_ != null) {
+        output.writeMessage(9, getTimestamp());
       }
       unknownFields.writeTo(output);
     }
@@ -40111,9 +30564,41 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < configRules_.size(); i++) {
+      if (sliceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, configRules_.get(i));
+          .computeMessageSize(1, getSliceId());
+      }
+      for (int i = 0; i < sliceEndpointIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, sliceEndpointIds_.get(i));
+      }
+      for (int i = 0; i < sliceConstraints_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, sliceConstraints_.get(i));
+      }
+      for (int i = 0; i < sliceServiceIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, sliceServiceIds_.get(i));
+      }
+      for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, sliceSubsliceIds_.get(i));
+      }
+      if (sliceStatus_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, getSliceStatus());
+      }
+      if (sliceConfig_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, getSliceConfig());
+      }
+      if (sliceOwner_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, getSliceOwner());
+      }
+      if (timestamp_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, getTimestamp());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -40125,13 +30610,44 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceConfig)) {
+      if (!(obj instanceof context.ContextOuterClass.Slice)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
+      context.ContextOuterClass.Slice other = (context.ContextOuterClass.Slice) obj;
 
-      if (!getConfigRulesList()
-          .equals(other.getConfigRulesList())) return false;
+      if (hasSliceId() != other.hasSliceId()) return false;
+      if (hasSliceId()) {
+        if (!getSliceId()
+            .equals(other.getSliceId())) 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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -40141,80 +30657,112 @@ public final class ContextOuterClass {
       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();
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasSliceId()) {
+        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getSliceId().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceConfig parseFrom(
+    public static context.ContextOuterClass.Slice parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
+    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.SliceConfig parseFrom(
+    public static context.ContextOuterClass.Slice parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
+    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.SliceConfig parseFrom(byte[] data)
+    public static context.ContextOuterClass.Slice parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
+    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.SliceConfig parseFrom(java.io.InputStream input)
+    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.SliceConfig parseFrom(
+    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.SliceConfig parseDelimitedFrom(java.io.InputStream input)
+    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.SliceConfig parseDelimitedFrom(
+    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.SliceConfig parseFrom(
+    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.SliceConfig parseFrom(
+    public static context.ContextOuterClass.Slice parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -40227,7 +30775,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceConfig prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Slice prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -40243,1221 +30791,1939 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.SliceConfig}
+     * Protobuf type {@code context.Slice}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceConfig)
-        context.ContextOuterClass.SliceConfigOrBuilder {
+        // @@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_SliceConfig_descriptor;
+        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() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getSliceEndpointIdsFieldBuilder();
+          getSliceConstraintsFieldBuilder();
+          getSliceServiceIdsFieldBuilder();
+          getSliceSubsliceIdsFieldBuilder();
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = null;
+        } else {
+          sliceId_ = null;
+          sliceIdBuilder_ = null;
+        }
+        if (sliceEndpointIdsBuilder_ == null) {
+          sliceEndpointIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          sliceEndpointIdsBuilder_.clear();
+        }
+        if (sliceConstraintsBuilder_ == null) {
+          sliceConstraints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          sliceConstraintsBuilder_.clear();
+        }
+        if (sliceServiceIdsBuilder_ == null) {
+          sliceServiceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+        } else {
+          sliceServiceIdsBuilder_.clear();
+        }
+        if (sliceSubsliceIdsBuilder_ == null) {
+          sliceSubsliceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          sliceSubsliceIdsBuilder_.clear();
+        }
+        if (sliceStatusBuilder_ == null) {
+          sliceStatus_ = null;
+        } else {
+          sliceStatus_ = null;
+          sliceStatusBuilder_ = null;
+        }
+        if (sliceConfigBuilder_ == null) {
+          sliceConfig_ = null;
+        } else {
+          sliceConfig_ = null;
+          sliceConfigBuilder_ = null;
+        }
+        if (sliceOwnerBuilder_ == null) {
+          sliceOwner_ = null;
+        } else {
+          sliceOwner_ = null;
+          sliceOwnerBuilder_ = null;
+        }
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+        } else {
+          timestamp_ = null;
+          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);
+        int from_bitField0_ = bitField0_;
+        if (sliceIdBuilder_ == null) {
+          result.sliceId_ = sliceId_;
+        } else {
+          result.sliceId_ = sliceIdBuilder_.build();
+        }
+        if (sliceEndpointIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.sliceEndpointIds_ = sliceEndpointIds_;
+        } else {
+          result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
+        }
+        if (sliceConstraintsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) != 0)) {
+            sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.sliceConstraints_ = sliceConstraints_;
+        } else {
+          result.sliceConstraints_ = sliceConstraintsBuilder_.build();
+        }
+        if (sliceServiceIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) != 0)) {
+            sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.sliceServiceIds_ = sliceServiceIds_;
+        } else {
+          result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
+        }
+        if (sliceSubsliceIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) != 0)) {
+            sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.sliceSubsliceIds_ = sliceSubsliceIds_;
+        } else {
+          result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
+        }
+        if (sliceStatusBuilder_ == null) {
+          result.sliceStatus_ = sliceStatus_;
+        } else {
+          result.sliceStatus_ = sliceStatusBuilder_.build();
+        }
+        if (sliceConfigBuilder_ == null) {
+          result.sliceConfig_ = sliceConfig_;
+        } else {
+          result.sliceConfig_ = sliceConfigBuilder_.build();
+        }
+        if (sliceOwnerBuilder_ == null) {
+          result.sliceOwner_ = sliceOwner_;
+        } else {
+          result.sliceOwner_ = sliceOwnerBuilder_.build();
+        }
+        if (timestampBuilder_ == null) {
+          result.timestamp_ = timestamp_;
+        } else {
+          result.timestamp_ = timestampBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @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 (sliceEndpointIdsBuilder_ == null) {
+          if (!other.sliceEndpointIds_.isEmpty()) {
+            if (sliceEndpointIds_.isEmpty()) {
+              sliceEndpointIds_ = other.sliceEndpointIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureSliceEndpointIdsIsMutable();
+              sliceEndpointIds_.addAll(other.sliceEndpointIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.sliceEndpointIds_.isEmpty()) {
+            if (sliceEndpointIdsBuilder_.isEmpty()) {
+              sliceEndpointIdsBuilder_.dispose();
+              sliceEndpointIdsBuilder_ = null;
+              sliceEndpointIds_ = other.sliceEndpointIds_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              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_ & ~0x00000002);
+            } else {
+              ensureSliceConstraintsIsMutable();
+              sliceConstraints_.addAll(other.sliceConstraints_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.sliceConstraints_.isEmpty()) {
+            if (sliceConstraintsBuilder_.isEmpty()) {
+              sliceConstraintsBuilder_.dispose();
+              sliceConstraintsBuilder_ = null;
+              sliceConstraints_ = other.sliceConstraints_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              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_ & ~0x00000004);
+            } else {
+              ensureSliceServiceIdsIsMutable();
+              sliceServiceIds_.addAll(other.sliceServiceIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.sliceServiceIds_.isEmpty()) {
+            if (sliceServiceIdsBuilder_.isEmpty()) {
+              sliceServiceIdsBuilder_.dispose();
+              sliceServiceIdsBuilder_ = null;
+              sliceServiceIds_ = other.sliceServiceIds_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              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_ & ~0x00000008);
+            } else {
+              ensureSliceSubsliceIdsIsMutable();
+              sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.sliceSubsliceIds_.isEmpty()) {
+            if (sliceSubsliceIdsBuilder_.isEmpty()) {
+              sliceSubsliceIdsBuilder_.dispose();
+              sliceSubsliceIdsBuilder_ = null;
+              sliceSubsliceIds_ = other.sliceSubsliceIds_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              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.unknownFields);
+        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 {
+        context.ContextOuterClass.Slice parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        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 sliceIdBuilder_ != null || sliceId_ != null;
+      }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          sliceIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 1;</code>
+       */
+      public Builder setSliceId(
+          context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          sliceIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 1;</code>
+       */
+      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
+        if (sliceIdBuilder_ == null) {
+          if (sliceId_ != null) {
+            sliceId_ =
+              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+          } else {
+            sliceId_ = value;
+          }
+          onChanged();
+        } else {
+          sliceIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 1;</code>
+       */
+      public Builder clearSliceId() {
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = null;
+          onChanged();
+        } else {
+          sliceId_ = null;
+          sliceIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceId slice_id = 1;</code>
+       */
+      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+        
+        onChanged();
+        return getSliceIdFieldBuilder().getBuilder();
       }
-
-      @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);
+      /**
+       * <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_;
       }
 
-      // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
+      private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ =
+        java.util.Collections.emptyList();
+      private void ensureSliceEndpointIdsIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
+          bitField0_ |= 0x00000001;
+         }
       }
 
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> sliceEndpointIdsBuilder_;
+
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+       */
+      public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
+        if (sliceEndpointIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(sliceEndpointIds_);
+        } else {
+          return sliceEndpointIdsBuilder_.getMessageList();
+        }
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConfigRulesFieldBuilder();
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+       */
+      public int getSliceEndpointIdsCount() {
+        if (sliceEndpointIdsBuilder_ == null) {
+          return sliceEndpointIds_.size();
+        } else {
+          return sliceEndpointIdsBuilder_.getCount();
         }
       }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</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 = 2;</code>
+       */
+      public Builder clearSliceEndpointIds() {
+        if (sliceEndpointIdsBuilder_ == null) {
+          sliceEndpointIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
         } else {
-          configRulesBuilder_.clear();
+          sliceEndpointIdsBuilder_.clear();
         }
         return this;
       }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</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 = 2;</code>
+       */
+      public context.ContextOuterClass.EndPointId.Builder getSliceEndpointIdsBuilder(
+          int index) {
+        return getSliceEndpointIdsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</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 = 2;</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 = 2;</code>
+       */
+      public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder() {
+        return getSliceEndpointIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.EndPointId.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</code>
+       */
+      public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder(
+          int index) {
+        return getSliceEndpointIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.EndPointId slice_endpoint_ids = 2;</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_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          sliceEndpointIds_ = null;
+        }
+        return sliceEndpointIdsBuilder_;
       }
 
-      @java.lang.Override
-      public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceConfig.getDefaultInstance();
+      private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ =
+        java.util.Collections.emptyList();
+      private void ensureSliceConstraintsIsMutable() {
+        if (!((bitField0_ & 0x00000002) != 0)) {
+          sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
+          bitField0_ |= 0x00000002;
+         }
       }
 
-      @java.lang.Override
-      public context.ContextOuterClass.SliceConfig build() {
-        context.ContextOuterClass.SliceConfig result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> sliceConstraintsBuilder_;
+
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
+        if (sliceConstraintsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(sliceConstraints_);
+        } else {
+          return sliceConstraintsBuilder_.getMessageList();
         }
-        return result;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceConfig buildPartial() {
-        context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
-        int from_bitField0_ = bitField0_;
-        if (configRulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            configRules_ = java.util.Collections.unmodifiableList(configRules_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public int getSliceConstraintsCount() {
+        if (sliceConstraintsBuilder_ == null) {
+          return sliceConstraints_.size();
+        } else {
+          return sliceConstraintsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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 = 3;</code>
+       */
+      public Builder setSliceConstraints(
+          int index, context.ContextOuterClass.Constraint value) {
+        if (sliceConstraintsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
-          result.configRules_ = configRules_;
+          ensureSliceConstraintsIsMutable();
+          sliceConstraints_.set(index, value);
+          onChanged();
         } else {
-          result.configRules_ = configRulesBuilder_.build();
+          sliceConstraintsBuilder_.setMessage(index, value);
         }
-        onBuilt();
-        return result;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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;
       }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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;
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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;
       }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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;
       }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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;
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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;
       }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceConfig) {
-          return mergeFrom((context.ContextOuterClass.SliceConfig)other);
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public Builder clearSliceConstraints() {
+        if (sliceConstraintsBuilder_ == null) {
+          sliceConstraints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
         } else {
-          super.mergeFrom(other);
-          return this;
+          sliceConstraintsBuilder_.clear();
         }
+        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();
-          }
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public Builder removeSliceConstraints(int index) {
+        if (sliceConstraintsBuilder_ == null) {
+          ensureSliceConstraintsIsMutable();
+          sliceConstraints_.remove(index);
+          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_);
-            }
-          }
+          sliceConstraintsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder getSliceConstraintsBuilder(
+          int index) {
+        return getSliceConstraintsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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 = 3;</code>
+       */
+      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+           getSliceConstraintsOrBuilderList() {
+        if (sliceConstraintsBuilder_ != null) {
+          return sliceConstraintsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(sliceConstraints_);
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
       }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder() {
+        return getSliceConstraintsFieldBuilder().addBuilder(
+            context.ContextOuterClass.Constraint.getDefaultInstance());
       }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceConfig parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder(
+          int index) {
+        return getSliceConstraintsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Constraint.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.Constraint slice_constraints = 3;</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_ & 0x00000002) != 0),
+                  getParentForChildren(),
+                  isClean());
+          sliceConstraints_ = null;
         }
-        return this;
+        return sliceConstraintsBuilder_;
       }
-      private int bitField0_;
 
-      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
+      private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ =
         java.util.Collections.emptyList();
-      private void ensureConfigRulesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
-          bitField0_ |= 0x00000001;
+      private void ensureSliceServiceIdsIsMutable() {
+        if (!((bitField0_ & 0x00000004) != 0)) {
+          sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
+          bitField0_ |= 0x00000004;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> sliceServiceIdsBuilder_;
 
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-        if (configRulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(configRules_);
+      public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
+        if (sliceServiceIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(sliceServiceIds_);
         } else {
-          return configRulesBuilder_.getMessageList();
+          return sliceServiceIdsBuilder_.getMessageList();
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public int getConfigRulesCount() {
-        if (configRulesBuilder_ == null) {
-          return configRules_.size();
+      public int getSliceServiceIdsCount() {
+        if (sliceServiceIdsBuilder_ == null) {
+          return sliceServiceIds_.size();
         } else {
-          return configRulesBuilder_.getCount();
+          return sliceServiceIdsBuilder_.getCount();
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);
+      public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
+        if (sliceServiceIdsBuilder_ == null) {
+          return sliceServiceIds_.get(index);
         } else {
-          return configRulesBuilder_.getMessage(index);
+          return sliceServiceIdsBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
+      public Builder setSliceServiceIds(
+          int index, context.ContextOuterClass.ServiceId value) {
+        if (sliceServiceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, value);
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.set(index, value);
           onChanged();
         } else {
-          configRulesBuilder_.setMessage(index, value);
+          sliceServiceIdsBuilder_.setMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, builderForValue.build());
+      public Builder setSliceServiceIds(
+          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (sliceServiceIdsBuilder_ == null) {
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          configRulesBuilder_.setMessage(index, builderForValue.build());
+          sliceServiceIdsBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
+      public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId value) {
+        if (sliceServiceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConfigRulesIsMutable();
-          configRules_.add(value);
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.add(value);
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(value);
+          sliceServiceIdsBuilder_.addMessage(value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
+      public Builder addSliceServiceIds(
+          int index, context.ContextOuterClass.ServiceId value) {
+        if (sliceServiceIdsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, value);
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.add(index, value);
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(index, value);
+          sliceServiceIdsBuilder_.addMessage(index, value);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder addConfigRules(
-          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(builderForValue.build());
+      public Builder addSliceServiceIds(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (sliceServiceIdsBuilder_ == null) {
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.add(builderForValue.build());
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(builderForValue.build());
+          sliceServiceIdsBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, builderForValue.build());
+      public Builder addSliceServiceIds(
+          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (sliceServiceIdsBuilder_ == null) {
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.add(index, builderForValue.build());
           onChanged();
         } else {
-          configRulesBuilder_.addMessage(index, builderForValue.build());
+          sliceServiceIdsBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder addAllConfigRules(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
+      public Builder addAllSliceServiceIds(
+          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
+        if (sliceServiceIdsBuilder_ == null) {
+          ensureSliceServiceIdsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, configRules_);
+              values, sliceServiceIds_);
           onChanged();
         } else {
-          configRulesBuilder_.addAllMessages(values);
+          sliceServiceIdsBuilder_.addAllMessages(values);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder clearConfigRules() {
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder clearSliceServiceIds() {
+        if (sliceServiceIdsBuilder_ == null) {
+          sliceServiceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
           onChanged();
         } else {
-          configRulesBuilder_.clear();
+          sliceServiceIdsBuilder_.clear();
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public Builder removeConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.remove(index);
+      public Builder removeSliceServiceIds(int index) {
+        if (sliceServiceIdsBuilder_ == null) {
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.remove(index);
           onChanged();
         } else {
-          configRulesBuilder_.remove(index);
+          sliceServiceIdsBuilder_.remove(index);
         }
         return this;
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
+      public context.ContextOuterClass.ServiceId.Builder getSliceServiceIdsBuilder(
           int index) {
-        return getConfigRulesFieldBuilder().getBuilder(index);
+        return getSliceServiceIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+      public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
           int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);  } else {
-          return configRulesBuilder_.getMessageOrBuilder(index);
+        if (sliceServiceIdsBuilder_ == null) {
+          return sliceServiceIds_.get(index);  } else {
+          return sliceServiceIdsBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-           getConfigRulesOrBuilderList() {
-        if (configRulesBuilder_ != null) {
-          return configRulesBuilder_.getMessageOrBuilderList();
+      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
+           getSliceServiceIdsOrBuilderList() {
+        if (sliceServiceIdsBuilder_ != null) {
+          return sliceServiceIdsBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(configRules_);
+          return java.util.Collections.unmodifiableList(sliceServiceIds_);
         }
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
-        return getConfigRulesFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConfigRule.getDefaultInstance());
+      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder() {
+        return getSliceServiceIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.ServiceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
+      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder(
           int index) {
-        return getConfigRulesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
+        return getSliceServiceIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
       }
       /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
+       * <code>repeated .context.ServiceId slice_service_ids = 4;</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 {
-        return new SliceConfig(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              sliceIds_.add(
-                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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;
-    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));
-      }
-      unknownFields.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));
+      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
+           getSliceServiceIdsBuilderList() {
+        return getSliceServiceIdsFieldBuilder().getBuilderList();
       }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
+      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_ & 0x00000004) != 0),
+                  getParentForChildren(),
+                  isClean());
+          sliceServiceIds_ = null;
+        }
+        return sliceServiceIdsBuilder_;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceIdList)) {
-        return super.equals(obj);
+
+      private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ =
+        java.util.Collections.emptyList();
+      private void ensureSliceSubsliceIdsIsMutable() {
+        if (!((bitField0_ & 0x00000008) != 0)) {
+          sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
+          bitField0_ |= 0x00000008;
+         }
       }
-      context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
 
-      if (!getSliceIdsList()
-          .equals(other.getSliceIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceSubsliceIdsBuilder_;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+        } else {
+          return sliceSubsliceIdsBuilder_.getMessageList();
+        }
       }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getSliceIdsCount() > 0) {
-        hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceIdsList().hashCode();
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public int getSliceSubsliceIdsCount() {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          return sliceSubsliceIds_.size();
+        } else {
+          return sliceSubsliceIdsBuilder_.getCount();
+        }
       }
-      hash = (29 * hash) + unknownFields.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;
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          return sliceSubsliceIds_.get(index);
+        } else {
+          return sliceSubsliceIdsBuilder_.getMessage(index);
+        }
       }
-
-      @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);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</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;
       }
-
-      // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</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;
       }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</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;
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getSliceIdsFieldBuilder();
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</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;
       }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public Builder addSliceSubsliceIds(
+          context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          ensureSliceSubsliceIdsIsMutable();
+          sliceSubsliceIds_.add(builderForValue.build());
+          onChanged();
         } else {
-          sliceIdsBuilder_.clear();
+          sliceSubsliceIdsBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</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;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceIdList.getDefaultInstance();
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</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;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceIdList build() {
-        context.ContextOuterClass.SliceIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public Builder clearSliceSubsliceIds() {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          sliceSubsliceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          sliceSubsliceIdsBuilder_.clear();
         }
-        return result;
+        return this;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceIdList buildPartial() {
-        context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (sliceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.sliceIds_ = sliceIds_;
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public Builder removeSliceSubsliceIds(int index) {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          ensureSliceSubsliceIdsIsMutable();
+          sliceSubsliceIds_.remove(index);
+          onChanged();
         } else {
-          result.sliceIds_ = sliceIdsBuilder_.build();
+          sliceSubsliceIdsBuilder_.remove(index);
         }
-        onBuilt();
-        return result;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public context.ContextOuterClass.SliceId.Builder getSliceSubsliceIdsBuilder(
+          int index) {
+        return getSliceSubsliceIdsFieldBuilder().getBuilder(index);
       }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
+          int index) {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          return sliceSubsliceIds_.get(index);  } else {
+          return sliceSubsliceIdsBuilder_.getMessageOrBuilder(index);
+        }
       }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
+           getSliceSubsliceIdsOrBuilderList() {
+        if (sliceSubsliceIdsBuilder_ != null) {
+          return sliceSubsliceIdsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+        }
       }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder() {
+        return getSliceSubsliceIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.SliceId.getDefaultInstance());
       }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder(
+          int index) {
+        return getSliceSubsliceIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.SliceId.getDefaultInstance());
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 5;</code>
+       */
+      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
+           getSliceSubsliceIdsBuilderList() {
+        return getSliceSubsliceIdsFieldBuilder().getBuilderList();
       }
-      @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;
+      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_ & 0x00000008) != 0),
+                  getParentForChildren(),
+                  isClean());
+          sliceSubsliceIds_ = null;
         }
+        return sliceSubsliceIdsBuilder_;
       }
 
-      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();
-          }
+      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 = 6;</code>
+       * @return Whether the sliceStatus field is set.
+       */
+      public boolean hasSliceStatus() {
+        return sliceStatusBuilder_ != null || sliceStatus_ != null;
+      }
+      /**
+       * <code>.context.SliceStatus slice_status = 6;</code>
+       * @return The sliceStatus.
+       */
+      public context.ContextOuterClass.SliceStatus getSliceStatus() {
+        if (sliceStatusBuilder_ == null) {
+          return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
         } 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_);
-            }
-          }
+          return sliceStatusBuilder_.getMessage();
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
       }
+      /**
+       * <code>.context.SliceStatus slice_status = 6;</code>
+       */
+      public Builder setSliceStatus(context.ContextOuterClass.SliceStatus value) {
+        if (sliceStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          sliceStatus_ = value;
+          onChanged();
+        } else {
+          sliceStatusBuilder_.setMessage(value);
+        }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+        return this;
       }
+      /**
+       * <code>.context.SliceStatus slice_status = 6;</code>
+       */
+      public Builder setSliceStatus(
+          context.ContextOuterClass.SliceStatus.Builder builderForValue) {
+        if (sliceStatusBuilder_ == null) {
+          sliceStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          sliceStatusBuilder_.setMessage(builderForValue.build());
+        }
 
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+        return this;
+      }
+      /**
+       * <code>.context.SliceStatus slice_status = 6;</code>
+       */
+      public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
+        if (sliceStatusBuilder_ == null) {
+          if (sliceStatus_ != null) {
+            sliceStatus_ =
+              context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
+          } else {
+            sliceStatus_ = value;
           }
+          onChanged();
+        } else {
+          sliceStatusBuilder_.mergeFrom(value);
         }
+
         return this;
       }
-      private int bitField0_;
+      /**
+       * <code>.context.SliceStatus slice_status = 6;</code>
+       */
+      public Builder clearSliceStatus() {
+        if (sliceStatusBuilder_ == null) {
+          sliceStatus_ = null;
+          onChanged();
+        } else {
+          sliceStatus_ = null;
+          sliceStatusBuilder_ = null;
+        }
 
-      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;
-         }
+        return this;
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;
-
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceStatus slice_status = 6;</code>
        */
-      public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
-        if (sliceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceIds_);
+      public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
+        
+        onChanged();
+        return getSliceStatusFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.SliceStatus slice_status = 6;</code>
+       */
+      public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
+        if (sliceStatusBuilder_ != null) {
+          return sliceStatusBuilder_.getMessageOrBuilder();
         } else {
-          return sliceIdsBuilder_.getMessageList();
+          return sliceStatus_ == null ?
+              context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
         }
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceStatus slice_status = 6;</code>
        */
-      public int getSliceIdsCount() {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.size();
-        } else {
-          return sliceIdsBuilder_.getCount();
+      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>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceConfig slice_config = 7;</code>
+       * @return Whether the sliceConfig field is set.
        */
-      public context.ContextOuterClass.SliceId getSliceIds(int index) {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.get(index);
+      public boolean hasSliceConfig() {
+        return sliceConfigBuilder_ != null || sliceConfig_ != null;
+      }
+      /**
+       * <code>.context.SliceConfig slice_config = 7;</code>
+       * @return The sliceConfig.
+       */
+      public context.ContextOuterClass.SliceConfig getSliceConfig() {
+        if (sliceConfigBuilder_ == null) {
+          return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
         } else {
-          return sliceIdsBuilder_.getMessage(index);
+          return sliceConfigBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceConfig slice_config = 7;</code>
        */
-      public Builder setSliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
+      public Builder setSliceConfig(context.ContextOuterClass.SliceConfig value) {
+        if (sliceConfigBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureSliceIdsIsMutable();
-          sliceIds_.set(index, value);
+          sliceConfig_ = value;
           onChanged();
         } else {
-          sliceIdsBuilder_.setMessage(index, value);
+          sliceConfigBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceConfig slice_config = 7;</code>
        */
-      public Builder setSliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.set(index, builderForValue.build());
+      public Builder setSliceConfig(
+          context.ContextOuterClass.SliceConfig.Builder builderForValue) {
+        if (sliceConfigBuilder_ == null) {
+          sliceConfig_ = builderForValue.build();
           onChanged();
         } else {
-          sliceIdsBuilder_.setMessage(index, builderForValue.build());
+          sliceConfigBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceConfig slice_config = 7;</code>
        */
-      public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
+        if (sliceConfigBuilder_ == null) {
+          if (sliceConfig_ != null) {
+            sliceConfig_ =
+              context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
+          } else {
+            sliceConfig_ = value;
           }
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(value);
           onChanged();
         } else {
-          sliceIdsBuilder_.addMessage(value);
+          sliceConfigBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceConfig slice_config = 7;</code>
        */
-      public Builder addSliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
+      public Builder clearSliceConfig() {
+        if (sliceConfigBuilder_ == null) {
+          sliceConfig_ = null;
+          onChanged();
+        } else {
+          sliceConfig_ = null;
+          sliceConfigBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.SliceConfig slice_config = 7;</code>
+       */
+      public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
+        
+        onChanged();
+        return getSliceConfigFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.SliceConfig slice_config = 7;</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 = 7;</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 = 8;</code>
+       * @return Whether the sliceOwner field is set.
+       */
+      public boolean hasSliceOwner() {
+        return sliceOwnerBuilder_ != null || sliceOwner_ != null;
+      }
+      /**
+       * <code>.context.SliceOwner slice_owner = 8;</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 = 8;</code>
+       */
+      public Builder setSliceOwner(context.ContextOuterClass.SliceOwner value) {
+        if (sliceOwnerBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(index, value);
+          sliceOwner_ = value;
           onChanged();
         } else {
-          sliceIdsBuilder_.addMessage(index, value);
+          sliceOwnerBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceOwner slice_owner = 8;</code>
        */
-      public Builder addSliceIds(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(builderForValue.build());
+      public Builder setSliceOwner(
+          context.ContextOuterClass.SliceOwner.Builder builderForValue) {
+        if (sliceOwnerBuilder_ == null) {
+          sliceOwner_ = builderForValue.build();
           onChanged();
         } else {
-          sliceIdsBuilder_.addMessage(builderForValue.build());
+          sliceOwnerBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceOwner slice_owner = 8;</code>
        */
-      public Builder addSliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(index, builderForValue.build());
+      public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
+        if (sliceOwnerBuilder_ == null) {
+          if (sliceOwner_ != null) {
+            sliceOwner_ =
+              context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
+          } else {
+            sliceOwner_ = value;
+          }
           onChanged();
         } else {
-          sliceIdsBuilder_.addMessage(index, builderForValue.build());
+          sliceOwnerBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceOwner slice_owner = 8;</code>
        */
-      public Builder addAllSliceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceIds_);
+      public Builder clearSliceOwner() {
+        if (sliceOwnerBuilder_ == null) {
+          sliceOwner_ = null;
           onChanged();
         } else {
-          sliceIdsBuilder_.addAllMessages(values);
+          sliceOwner_ = null;
+          sliceOwnerBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceOwner slice_owner = 8;</code>
        */
-      public Builder clearSliceIds() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
+      public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
+        
+        onChanged();
+        return getSliceOwnerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.SliceOwner slice_owner = 8;</code>
+       */
+      public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
+        if (sliceOwnerBuilder_ != null) {
+          return sliceOwnerBuilder_.getMessageOrBuilder();
         } else {
-          sliceIdsBuilder_.clear();
+          return sliceOwner_ == null ?
+              context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.SliceOwner slice_owner = 8;</code>
        */
-      public Builder removeSliceIds(int index) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.remove(index);
+      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 = 9;</code>
+       * @return Whether the timestamp field is set.
+       */
+      public boolean hasTimestamp() {
+        return timestampBuilder_ != null || timestamp_ != null;
+      }
+      /**
+       * <code>.context.Timestamp timestamp = 9;</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 = 9;</code>
+       */
+      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          timestamp_ = value;
           onChanged();
         } else {
-          sliceIdsBuilder_.remove(index);
+          timestampBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.Timestamp timestamp = 9;</code>
        */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(
-          int index) {
-        return getSliceIdsFieldBuilder().getBuilder(index);
+      public Builder setTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (timestampBuilder_ == null) {
+          timestamp_ = builderForValue.build();
+          onChanged();
+        } else {
+          timestampBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.Timestamp timestamp = 9;</code>
        */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-          int index) {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.get(index);  } else {
-          return sliceIdsBuilder_.getMessageOrBuilder(index);
+      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (timestampBuilder_ == null) {
+          if (timestamp_ != null) {
+            timestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+          } else {
+            timestamp_ = value;
+          }
+          onChanged();
+        } else {
+          timestampBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.Timestamp timestamp = 9;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-           getSliceIdsOrBuilderList() {
-        if (sliceIdsBuilder_ != null) {
-          return sliceIdsBuilder_.getMessageOrBuilderList();
+      public Builder clearTimestamp() {
+        if (timestampBuilder_ == null) {
+          timestamp_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(sliceIds_);
+          timestamp_ = null;
+          timestampBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.Timestamp timestamp = 9;</code>
        */
-      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
-        return getSliceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.SliceId.getDefaultInstance());
+      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+        
+        onChanged();
+        return getTimestampFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.Timestamp timestamp = 9;</code>
        */
-      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(
-          int index) {
-        return getSliceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.SliceId.getDefaultInstance());
+      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+        if (timestampBuilder_ != null) {
+          return timestampBuilder_.getMessageOrBuilder();
+        } else {
+          return timestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
       }
       /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
+       * <code>.context.Timestamp timestamp = 9;</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),
+      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());
-          sliceIds_ = null;
+          timestamp_ = null;
         }
-        return sliceIdsBuilder_;
+        return timestampBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -41472,95 +32738,98 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceIdList)
+      // @@protoc_insertion_point(builder_scope:context.Slice)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceIdList)
-    private static final context.ContextOuterClass.SliceIdList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.Slice)
+    private static final context.ContextOuterClass.Slice DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceIdList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Slice();
     }
 
-    public static context.ContextOuterClass.SliceIdList getDefaultInstance() {
+    public static context.ContextOuterClass.Slice getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceIdList>
-        PARSER = new com.google.protobuf.AbstractParser<SliceIdList>() {
+    private static final com.google.protobuf.Parser<Slice>
+        PARSER = new com.google.protobuf.AbstractParser<Slice>() {
       @java.lang.Override
-      public SliceIdList parsePartialFrom(
+      public Slice parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceIdList(input, extensionRegistry);
+        return new Slice(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceIdList> parser() {
+    public static com.google.protobuf.Parser<Slice> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceIdList> getParserForType() {
+    public com.google.protobuf.Parser<Slice> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
+    public context.ContextOuterClass.Slice getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceList)
+  public interface SliceOwnerOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceOwner)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>.context.Uuid owner_uuid = 1;</code>
+     * @return Whether the ownerUuid field is set.
      */
-    java.util.List<context.ContextOuterClass.Slice> 
-        getSlicesList();
+    boolean hasOwnerUuid();
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>.context.Uuid owner_uuid = 1;</code>
+     * @return The ownerUuid.
      */
-    context.ContextOuterClass.Slice getSlices(int index);
+    context.ContextOuterClass.Uuid getOwnerUuid();
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>.context.Uuid owner_uuid = 1;</code>
      */
-    int getSlicesCount();
+    context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder();
+
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>string owner_string = 2;</code>
+     * @return The ownerString.
      */
-    java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
-        getSlicesOrBuilderList();
+    java.lang.String getOwnerString();
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>string owner_string = 2;</code>
+     * @return The bytes for ownerString.
      */
-    context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
-        int index);
+    com.google.protobuf.ByteString
+        getOwnerStringBytes();
   }
   /**
-   * Protobuf type {@code context.SliceList}
+   * Protobuf type {@code context.SliceOwner}
    */
-  public static final class SliceList extends
+  public static final class SliceOwner extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceList)
-      SliceListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceOwner)
+      SliceOwnerOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceList.newBuilder() to construct.
-    private SliceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceOwner.newBuilder() to construct.
+    private SliceOwner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceList() {
-      slices_ = java.util.Collections.emptyList();
+    private SliceOwner() {
+      ownerString_ = "";
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SliceList();
+      return new SliceOwner();
     }
 
     @java.lang.Override
@@ -41568,7 +32837,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceList(
+    private SliceOwner(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -41576,7 +32845,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -41588,12 +32856,22 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>();
-                mutable_bitField0_ |= 0x00000001;
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (ownerUuid_ != null) {
+                subBuilder = ownerUuid_.toBuilder();
               }
-              slices_.add(
-                  input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
+              ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ownerUuid_);
+                ownerUuid_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              ownerString_ = s;
               break;
             }
             default: {
@@ -41611,64 +32889,85 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          slices_ = java.util.Collections.unmodifiableList(slices_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
+              context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
     }
 
-    public static final int SLICES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Slice> slices_;
+    public static final int OWNER_UUID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid ownerUuid_;
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>.context.Uuid owner_uuid = 1;</code>
+     * @return Whether the ownerUuid field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
-      return slices_;
+    public boolean hasOwnerUuid() {
+      return ownerUuid_ != null;
     }
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>.context.Uuid owner_uuid = 1;</code>
+     * @return The ownerUuid.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
-        getSlicesOrBuilderList() {
-      return slices_;
+    public context.ContextOuterClass.Uuid getOwnerUuid() {
+      return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
     }
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>.context.Uuid owner_uuid = 1;</code>
      */
     @java.lang.Override
-    public int getSlicesCount() {
-      return slices_.size();
+    public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
+      return getOwnerUuid();
     }
+
+    public static final int OWNER_STRING_FIELD_NUMBER = 2;
+    private volatile java.lang.Object ownerString_;
     /**
-     * <code>repeated .context.Slice slices = 1;</code>
+     * <code>string owner_string = 2;</code>
+     * @return The ownerString.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Slice getSlices(int index) {
-      return slices_.get(index);
+    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>repeated .context.Slice slices = 1;</code>
+     * <code>string owner_string = 2;</code>
+     * @return The bytes for ownerString.
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
-        int index) {
-      return slices_.get(index);
+    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;
@@ -41685,8 +32984,11 @@ public final class ContextOuterClass {
     @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));
+      if (ownerUuid_ != null) {
+        output.writeMessage(1, getOwnerUuid());
+      }
+      if (!getOwnerStringBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
       }
       unknownFields.writeTo(output);
     }
@@ -41697,9 +32999,12 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < slices_.size(); i++) {
+      if (ownerUuid_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, slices_.get(i));
+          .computeMessageSize(1, getOwnerUuid());
+      }
+      if (!getOwnerStringBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -41711,13 +33016,18 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceList)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceOwner)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
+      context.ContextOuterClass.SliceOwner other = (context.ContextOuterClass.SliceOwner) obj;
 
-      if (!getSlicesList()
-          .equals(other.getSlicesList())) return false;
+      if (hasOwnerUuid() != other.hasOwnerUuid()) return false;
+      if (hasOwnerUuid()) {
+        if (!getOwnerUuid()
+            .equals(other.getOwnerUuid())) return false;
+      }
+      if (!getOwnerString()
+          .equals(other.getOwnerString())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -41729,78 +33039,80 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getSlicesCount() > 0) {
-        hash = (37 * hash) + SLICES_FIELD_NUMBER;
-        hash = (53 * hash) + getSlicesList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceList parseFrom(
+    public static context.ContextOuterClass.SliceOwner parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceList parseFrom(
+    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.SliceList parseFrom(
+    public static context.ContextOuterClass.SliceOwner parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceList parseFrom(
+    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.SliceList parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceList parseFrom(
+    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.SliceList parseFrom(java.io.InputStream input)
+    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.SliceList parseFrom(
+    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.SliceList parseDelimitedFrom(java.io.InputStream input)
+    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.SliceList parseDelimitedFrom(
+    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.SliceList parseFrom(
+    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.SliceList parseFrom(
+    public static context.ContextOuterClass.SliceOwner parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -41813,7 +33125,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceOwner prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -41829,26 +33141,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.SliceList}
+     * Protobuf type {@code context.SliceOwner}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceList)
-        context.ContextOuterClass.SliceListOrBuilder {
+        // @@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_SliceList_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
+                context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.SliceList.newBuilder()
+      // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -41861,35 +33173,36 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getSlicesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (slicesBuilder_ == null) {
-          slices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (ownerUuidBuilder_ == null) {
+          ownerUuid_ = null;
         } else {
-          slicesBuilder_.clear();
+          ownerUuid_ = null;
+          ownerUuidBuilder_ = null;
         }
+        ownerString_ = "";
+
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceList.getDefaultInstance();
+      public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceOwner.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceList build() {
-        context.ContextOuterClass.SliceList result = buildPartial();
+      public context.ContextOuterClass.SliceOwner build() {
+        context.ContextOuterClass.SliceOwner result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -41897,18 +33210,14 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceList buildPartial() {
-        context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
-        int from_bitField0_ = bitField0_;
-        if (slicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            slices_ = java.util.Collections.unmodifiableList(slices_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.slices_ = slices_;
+      public context.ContextOuterClass.SliceOwner buildPartial() {
+        context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
+        if (ownerUuidBuilder_ == null) {
+          result.ownerUuid_ = ownerUuid_;
         } else {
-          result.slices_ = slicesBuilder_.build();
+          result.ownerUuid_ = ownerUuidBuilder_.build();
         }
+        result.ownerString_ = ownerString_;
         onBuilt();
         return result;
       }
@@ -41947,41 +33256,22 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceList) {
-          return mergeFrom((context.ContextOuterClass.SliceList)other);
+        if (other instanceof context.ContextOuterClass.SliceOwner) {
+          return mergeFrom((context.ContextOuterClass.SliceOwner)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_);
-            }
-          }
+      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_;
+          onChanged();
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -41998,11 +33288,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.SliceList parsedMessage = null;
+        context.ContextOuterClass.SliceOwner parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -42011,246 +33301,200 @@ public final class ContextOuterClass {
         }
         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_;
 
+      private context.ContextOuterClass.Uuid ownerUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
       /**
-       * <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>
+       * <code>.context.Uuid owner_uuid = 1;</code>
+       * @return Whether the ownerUuid field is set.
        */
-      public int getSlicesCount() {
-        if (slicesBuilder_ == null) {
-          return slices_.size();
-        } else {
-          return slicesBuilder_.getCount();
-        }
+      public boolean hasOwnerUuid() {
+        return ownerUuidBuilder_ != null || ownerUuid_ != null;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 1;</code>
+       * @return The ownerUuid.
        */
-      public context.ContextOuterClass.Slice getSlices(int index) {
-        if (slicesBuilder_ == null) {
-          return slices_.get(index);
+      public context.ContextOuterClass.Uuid getOwnerUuid() {
+        if (ownerUuidBuilder_ == null) {
+          return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
         } else {
-          return slicesBuilder_.getMessage(index);
+          return ownerUuidBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 1;</code>
        */
-      public Builder setSlices(
-          int index, context.ContextOuterClass.Slice value) {
-        if (slicesBuilder_ == null) {
+      public Builder setOwnerUuid(context.ContextOuterClass.Uuid value) {
+        if (ownerUuidBuilder_ == 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());
+          ownerUuid_ = value;
           onChanged();
         } else {
-          slicesBuilder_.setMessage(index, builderForValue.build());
+          ownerUuidBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 1;</code>
        */
-      public Builder addSlices(context.ContextOuterClass.Slice value) {
-        if (slicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSlicesIsMutable();
-          slices_.add(value);
+      public Builder setOwnerUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (ownerUuidBuilder_ == null) {
+          ownerUuid_ = builderForValue.build();
           onChanged();
         } else {
-          slicesBuilder_.addMessage(value);
+          ownerUuidBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 1;</code>
        */
-      public Builder addSlices(
-          int index, context.ContextOuterClass.Slice value) {
-        if (slicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
+        if (ownerUuidBuilder_ == null) {
+          if (ownerUuid_ != null) {
+            ownerUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
+          } else {
+            ownerUuid_ = value;
           }
-          ensureSlicesIsMutable();
-          slices_.add(index, value);
           onChanged();
         } else {
-          slicesBuilder_.addMessage(index, value);
+          ownerUuidBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 1;</code>
        */
-      public Builder addSlices(
-          context.ContextOuterClass.Slice.Builder builderForValue) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          slices_.add(builderForValue.build());
+      public Builder clearOwnerUuid() {
+        if (ownerUuidBuilder_ == null) {
+          ownerUuid_ = null;
           onChanged();
         } else {
-          slicesBuilder_.addMessage(builderForValue.build());
+          ownerUuid_ = null;
+          ownerUuidBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 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;
+      public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
+        
+        onChanged();
+        return getOwnerUuidFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 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();
+      public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
+        if (ownerUuidBuilder_ != null) {
+          return ownerUuidBuilder_.getMessageOrBuilder();
         } else {
-          slicesBuilder_.addAllMessages(values);
+          return ownerUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>.context.Uuid owner_uuid = 1;</code>
        */
-      public Builder clearSlices() {
-        if (slicesBuilder_ == null) {
-          slices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          slicesBuilder_.clear();
+      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 this;
+        return ownerUuidBuilder_;
       }
+
+      private java.lang.Object ownerString_ = "";
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>string owner_string = 2;</code>
+       * @return The ownerString.
        */
-      public Builder removeSlices(int index) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          slices_.remove(index);
-          onChanged();
+      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 {
-          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);
+          return (java.lang.String) ref;
         }
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>string owner_string = 2;</code>
+       * @return The bytes for ownerString.
        */
-      public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
-           getSlicesOrBuilderList() {
-        if (slicesBuilder_ != null) {
-          return slicesBuilder_.getMessageOrBuilderList();
+      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 java.util.Collections.unmodifiableList(slices_);
+          return (com.google.protobuf.ByteString) ref;
         }
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>string owner_string = 2;</code>
+       * @param value The ownerString to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.Slice.Builder addSlicesBuilder() {
-        return getSlicesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Slice.getDefaultInstance());
+      public Builder setOwnerString(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        ownerString_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>string owner_string = 2;</code>
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.Slice.Builder addSlicesBuilder(
-          int index) {
-        return getSlicesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Slice.getDefaultInstance());
+      public Builder clearOwnerString() {
+        
+        ownerString_ = getDefaultInstance().getOwnerString();
+        onChanged();
+        return this;
       }
       /**
-       * <code>repeated .context.Slice slices = 1;</code>
+       * <code>string owner_string = 2;</code>
+       * @param value The bytes for ownerString to set.
+       * @return This builder for chaining.
        */
-      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_;
+      public Builder setOwnerStringBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        ownerString_ = value;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -42265,115 +33509,82 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceList)
+      // @@protoc_insertion_point(builder_scope:context.SliceOwner)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceList)
-    private static final context.ContextOuterClass.SliceList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceOwner)
+    private static final context.ContextOuterClass.SliceOwner DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceOwner();
     }
 
-    public static context.ContextOuterClass.SliceList getDefaultInstance() {
+    public static context.ContextOuterClass.SliceOwner getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceList>
-        PARSER = new com.google.protobuf.AbstractParser<SliceList>() {
+    private static final com.google.protobuf.Parser<SliceOwner>
+        PARSER = new com.google.protobuf.AbstractParser<SliceOwner>() {
       @java.lang.Override
-      public SliceList parsePartialFrom(
+      public SliceOwner parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceList(input, extensionRegistry);
+        return new SliceOwner(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceList> parser() {
+    public static com.google.protobuf.Parser<SliceOwner> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceList> getParserForType() {
+    public com.google.protobuf.Parser<SliceOwner> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceFilterOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceFilter)
+  public interface SliceStatusOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceStatus)
       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.
+     * <code>.context.SliceStatusEnum slice_status = 1;</code>
+     * @return The enum numeric value on the wire for sliceStatus.
      */
-    boolean getIncludeSubsliceIds();
-
+    int getSliceStatusValue();
     /**
-     * <code>bool include_config_rules = 6;</code>
-     * @return The includeConfigRules.
+     * <code>.context.SliceStatusEnum slice_status = 1;</code>
+     * @return The sliceStatus.
      */
-    boolean getIncludeConfigRules();
+    context.ContextOuterClass.SliceStatusEnum getSliceStatus();
   }
   /**
-   * Protobuf type {@code context.SliceFilter}
+   * Protobuf type {@code context.SliceStatus}
    */
-  public static final class SliceFilter extends
+  public static final class SliceStatus extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceFilter)
-      SliceFilterOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceStatus)
+      SliceStatusOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceFilter.newBuilder() to construct.
-    private SliceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceStatus.newBuilder() to construct.
+    private SliceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceFilter() {
+    private SliceStatus() {
+      sliceStatus_ = 0;
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SliceFilter();
+      return new SliceStatus();
     }
 
     @java.lang.Override
@@ -42381,7 +33592,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceFilter(
+    private SliceStatus(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -42399,42 +33610,10 @@ public final class ContextOuterClass {
             case 0:
               done = true;
               break;
-            case 10: {
-              context.ContextOuterClass.SliceIdList.Builder subBuilder = null;
-              if (sliceIds_ != null) {
-                subBuilder = sliceIds_.toBuilder();
-              }
-              sliceIds_ = input.readMessage(context.ContextOuterClass.SliceIdList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceIds_);
-                sliceIds_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              includeEndpointIds_ = input.readBool();
-              break;
-            }
-            case 24: {
-
-              includeConstraints_ = input.readBool();
-              break;
-            }
-            case 32: {
-
-              includeServiceIds_ = input.readBool();
-              break;
-            }
-            case 40: {
-
-              includeSubsliceIds_ = input.readBool();
-              break;
-            }
-            case 48: {
+            case 8: {
+              int rawValue = input.readEnum();
 
-              includeConfigRules_ = input.readBool();
+              sliceStatus_ = rawValue;
               break;
             }
             default: {
@@ -42458,96 +33637,34 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceStatus_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 getSliceIds();
-    }
-
-    public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
-    private boolean includeEndpointIds_;
-    /**
-     * <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_;
-    /**
-     * <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_;
-    /**
-     * <code>bool include_service_ids = 4;</code>
-     * @return The includeServiceIds.
-     */
-    @java.lang.Override
-    public boolean getIncludeServiceIds() {
-      return includeServiceIds_;
+              context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
     }
 
-    public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
-    private boolean includeSubsliceIds_;
+    public static final int SLICE_STATUS_FIELD_NUMBER = 1;
+    private int sliceStatus_;
     /**
-     * <code>bool include_subslice_ids = 5;</code>
-     * @return The includeSubsliceIds.
+     * <code>.context.SliceStatusEnum slice_status = 1;</code>
+     * @return The enum numeric value on the wire for sliceStatus.
      */
-    @java.lang.Override
-    public boolean getIncludeSubsliceIds() {
-      return includeSubsliceIds_;
+    @java.lang.Override public int getSliceStatusValue() {
+      return sliceStatus_;
     }
-
-    public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
-    private boolean includeConfigRules_;
     /**
-     * <code>bool include_config_rules = 6;</code>
-     * @return The includeConfigRules.
+     * <code>.context.SliceStatusEnum slice_status = 1;</code>
+     * @return The sliceStatus.
      */
-    @java.lang.Override
-    public boolean getIncludeConfigRules() {
-      return includeConfigRules_;
+    @java.lang.Override public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
+      @SuppressWarnings("deprecation")
+      context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
+      return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -42564,23 +33681,8 @@ public final class ContextOuterClass {
     @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_);
+      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
+        output.writeEnum(1, sliceStatus_);
       }
       unknownFields.writeTo(output);
     }
@@ -42591,29 +33693,9 @@ public final class ContextOuterClass {
       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) {
+      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(6, includeConfigRules_);
+          .computeEnumSize(1, sliceStatus_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -42625,26 +33707,12 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceFilter)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceStatus)) {
         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;
+      context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
+
+      if (sliceStatus_ != other.sliceStatus_) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -42656,93 +33724,76 @@ public final class ContextOuterClass {
       }
       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 = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
+      hash = (53 * hash) + sliceStatus_;
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceFilter parseFrom(
+    public static context.ContextOuterClass.SliceStatus parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
+    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.SliceFilter parseFrom(
+    public static context.ContextOuterClass.SliceStatus parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
+    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.SliceFilter parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
+    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.SliceFilter parseFrom(java.io.InputStream input)
+    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.SliceFilter parseFrom(
+    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.SliceFilter parseDelimitedFrom(java.io.InputStream input)
+    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.SliceFilter parseDelimitedFrom(
+    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.SliceFilter parseFrom(
+    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.SliceFilter parseFrom(
+    public static context.ContextOuterClass.SliceStatus parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -42755,7 +33806,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceFilter prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceStatus prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -42771,26 +33822,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.SliceFilter}
+     * Protobuf type {@code context.SliceStatus}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceFilter)
-        context.ContextOuterClass.SliceFilterOrBuilder {
+        // @@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_SliceFilter_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
+                context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
+      // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -42808,21 +33859,7 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = null;
-        } else {
-          sliceIds_ = null;
-          sliceIdsBuilder_ = null;
-        }
-        includeEndpointIds_ = false;
-
-        includeConstraints_ = false;
-
-        includeServiceIds_ = false;
-
-        includeSubsliceIds_ = false;
-
-        includeConfigRules_ = false;
+        sliceStatus_ = 0;
 
         return this;
       }
@@ -42830,17 +33867,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceFilter.getDefaultInstance();
+      public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceStatus.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceFilter build() {
-        context.ContextOuterClass.SliceFilter result = buildPartial();
+      public context.ContextOuterClass.SliceStatus build() {
+        context.ContextOuterClass.SliceStatus result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -42848,18 +33885,9 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceFilter buildPartial() {
-        context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
-        if (sliceIdsBuilder_ == null) {
-          result.sliceIds_ = sliceIds_;
-        } else {
-          result.sliceIds_ = sliceIdsBuilder_.build();
-        }
-        result.includeEndpointIds_ = includeEndpointIds_;
-        result.includeConstraints_ = includeConstraints_;
-        result.includeServiceIds_ = includeServiceIds_;
-        result.includeSubsliceIds_ = includeSubsliceIds_;
-        result.includeConfigRules_ = includeConfigRules_;
+      public context.ContextOuterClass.SliceStatus buildPartial() {
+        context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
+        result.sliceStatus_ = sliceStatus_;
         onBuilt();
         return result;
       }
@@ -42898,33 +33926,18 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceFilter) {
-          return mergeFrom((context.ContextOuterClass.SliceFilter)other);
+        if (other instanceof context.ContextOuterClass.SliceStatus) {
+          return mergeFrom((context.ContextOuterClass.SliceStatus)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());
+      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.unknownFields);
         onChanged();
@@ -42941,11 +33954,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.SliceFilter parsedMessage = null;
+        context.ContextOuterClass.SliceStatus parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceFilter) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -42955,276 +33968,56 @@ public final class ContextOuterClass {
         return this;
       }
 
-      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 sliceIdsBuilder_ != null || sliceIds_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder setSliceIds(
-          context.ContextOuterClass.SliceIdList.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
-        if (sliceIdsBuilder_ == null) {
-          if (sliceIds_ != null) {
-            sliceIds_ =
-              context.ContextOuterClass.SliceIdList.newBuilder(sliceIds_).mergeFrom(value).buildPartial();
-          } else {
-            sliceIds_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdsBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder clearSliceIds() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = null;
-          onChanged();
-        } else {
-          sliceIds_ = null;
-          sliceIdsBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeEndpointIds() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConstraints() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_service_ids = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeServiceIds() {
-        
-        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_;
-      }
+      private int sliceStatus_ = 0;
       /**
-       * <code>bool include_subslice_ids = 5;</code>
-       * @param value The includeSubsliceIds to set.
-       * @return This builder for chaining.
+       * <code>.context.SliceStatusEnum slice_status = 1;</code>
+       * @return The enum numeric value on the wire for sliceStatus.
        */
-      public Builder setIncludeSubsliceIds(boolean value) {
-        
-        includeSubsliceIds_ = value;
-        onChanged();
-        return this;
+      @java.lang.Override public int getSliceStatusValue() {
+        return sliceStatus_;
       }
       /**
-       * <code>bool include_subslice_ids = 5;</code>
+       * <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 clearIncludeSubsliceIds() {
+      public Builder setSliceStatusValue(int value) {
         
-        includeSubsliceIds_ = false;
+        sliceStatus_ = value;
         onChanged();
         return this;
       }
-
-      private boolean includeConfigRules_ ;
       /**
-       * <code>bool include_config_rules = 6;</code>
-       * @return The includeConfigRules.
+       * <code>.context.SliceStatusEnum slice_status = 1;</code>
+       * @return The sliceStatus.
        */
       @java.lang.Override
-      public boolean getIncludeConfigRules() {
-        return includeConfigRules_;
+      public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
+        @SuppressWarnings("deprecation")
+        context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
+        return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
       }
       /**
-       * <code>bool include_config_rules = 6;</code>
-       * @param value The includeConfigRules to set.
+       * <code>.context.SliceStatusEnum slice_status = 1;</code>
+       * @param value The sliceStatus to set.
        * @return This builder for chaining.
        */
-      public Builder setIncludeConfigRules(boolean value) {
+      public Builder setSliceStatus(context.ContextOuterClass.SliceStatusEnum value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
         
-        includeConfigRules_ = value;
+        sliceStatus_ = value.getNumber();
         onChanged();
         return this;
       }
       /**
-       * <code>bool include_config_rules = 6;</code>
+       * <code>.context.SliceStatusEnum slice_status = 1;</code>
        * @return This builder for chaining.
        */
-      public Builder clearIncludeConfigRules() {
+      public Builder clearSliceStatus() {
         
-        includeConfigRules_ = false;
+        sliceStatus_ = 0;
         onChanged();
         return this;
       }
@@ -43241,100 +34034,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceFilter)
+      // @@protoc_insertion_point(builder_scope:context.SliceStatus)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceFilter)
-    private static final context.ContextOuterClass.SliceFilter DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceStatus)
+    private static final context.ContextOuterClass.SliceStatus DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceFilter();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceStatus();
     }
 
-    public static context.ContextOuterClass.SliceFilter getDefaultInstance() {
+    public static context.ContextOuterClass.SliceStatus getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceFilter>
-        PARSER = new com.google.protobuf.AbstractParser<SliceFilter>() {
+    private static final com.google.protobuf.Parser<SliceStatus>
+        PARSER = new com.google.protobuf.AbstractParser<SliceStatus>() {
       @java.lang.Override
-      public SliceFilter parsePartialFrom(
+      public SliceStatus parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceFilter(input, extensionRegistry);
+        return new SliceStatus(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceFilter> parser() {
+    public static com.google.protobuf.Parser<SliceStatus> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceFilter> getParserForType() {
+    public com.google.protobuf.Parser<SliceStatus> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface SliceEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceEvent)
+  public interface SliceConfigOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceConfig)
       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.
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.Event getEvent();
+    java.util.List<context.ContextOuterClass.ConfigRule> 
+        getConfigRulesList();
     /**
-     * <code>.context.Event event = 1;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
-
+    context.ContextOuterClass.ConfigRule getConfigRules(int index);
     /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return Whether the sliceId field is set.
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    boolean hasSliceId();
+    int getConfigRulesCount();
     /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return The sliceId.
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.SliceId getSliceId();
+    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+        getConfigRulesOrBuilderList();
     /**
-     * <code>.context.SliceId slice_id = 2;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+        int index);
   }
   /**
-   * Protobuf type {@code context.SliceEvent}
+   * Protobuf type {@code context.SliceConfig}
    */
-  public static final class SliceEvent extends
+  public static final class SliceConfig extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceEvent)
-      SliceEventOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceConfig)
+      SliceConfigOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use SliceEvent.newBuilder() to construct.
-    private SliceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceConfig.newBuilder() to construct.
+    private SliceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private SliceEvent() {
+    private SliceConfig() {
+      configRules_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new SliceEvent();
+      return new SliceConfig();
     }
 
     @java.lang.Override
@@ -43342,7 +34130,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private SliceEvent(
+    private SliceConfig(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -43350,6 +34138,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -43361,29 +34150,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
-              }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                mutable_bitField0_ |= 0x00000001;
               }
-
+              configRules_.add(
+                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -43401,73 +34173,64 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          configRules_ = java.util.Collections.unmodifiableList(configRules_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceConfig_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;
+              context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
     }
+
+    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
     /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+      return configRules_;
     }
     /**
-     * <code>.context.Event event = 1;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
+    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+        getConfigRulesOrBuilderList() {
+      return configRules_;
     }
-
-    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.
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public boolean hasSliceId() {
-      return sliceId_ != null;
+    public int getConfigRulesCount() {
+      return configRules_.size();
     }
     /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return The sliceId.
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceId() {
-      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+      return configRules_.get(index);
     }
     /**
-     * <code>.context.SliceId slice_id = 2;</code>
+     * <code>repeated .context.ConfigRule config_rules = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-      return getSliceId();
+    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
+        int index) {
+      return configRules_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -43484,11 +34247,8 @@ public final class ContextOuterClass {
     @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());
+      for (int i = 0; i < configRules_.size(); i++) {
+        output.writeMessage(1, configRules_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -43499,13 +34259,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (sliceId_ != null) {
+      for (int i = 0; i < configRules_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getSliceId());
+          .computeMessageSize(1, configRules_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -43517,21 +34273,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.SliceEvent)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceConfig)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.SliceEvent other = (context.ContextOuterClass.SliceEvent) obj;
+      context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) 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 (!getConfigRulesList()
+          .equals(other.getConfigRulesList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -43543,82 +34291,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (getConfigRulesCount() > 0) {
+        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
+        hash = (53 * hash) + getConfigRulesList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.SliceEvent parseFrom(
+    public static context.ContextOuterClass.SliceConfig parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
+    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.SliceEvent parseFrom(
+    public static context.ContextOuterClass.SliceConfig parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
+    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.SliceEvent parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
+    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.SliceEvent parseFrom(java.io.InputStream input)
+    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.SliceEvent parseFrom(
+    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.SliceEvent parseDelimitedFrom(java.io.InputStream input)
+    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.SliceEvent parseDelimitedFrom(
+    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.SliceEvent parseFrom(
+    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.SliceEvent parseFrom(
+    public static context.ContextOuterClass.SliceConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -43631,7 +34375,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.SliceEvent prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceConfig prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -43647,26 +34391,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.SliceEvent}
+     * Protobuf type {@code context.SliceConfig}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceEvent)
-        context.ContextOuterClass.SliceEventOrBuilder {
+        // @@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_SliceEvent_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
+                context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
+      // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -43679,22 +34423,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getConfigRulesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
+        if (configRulesBuilder_ == null) {
+          configRules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
+          configRulesBuilder_.clear();
         }
         return this;
       }
@@ -43702,17 +34441,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceEvent.getDefaultInstance();
+      public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceConfig.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceEvent build() {
-        context.ContextOuterClass.SliceEvent result = buildPartial();
+      public context.ContextOuterClass.SliceConfig build() {
+        context.ContextOuterClass.SliceConfig result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -43720,17 +34459,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.SliceEvent buildPartial() {
-        context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
+      public context.ContextOuterClass.SliceConfig buildPartial() {
+        context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
+        int from_bitField0_ = bitField0_;
+        if (configRulesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            configRules_ = java.util.Collections.unmodifiableList(configRules_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.configRules_ = configRules_;
         } else {
-          result.sliceId_ = sliceIdBuilder_.build();
+          result.configRules_ = configRulesBuilder_.build();
         }
         onBuilt();
         return result;
@@ -43770,21 +34509,41 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceEvent) {
-          return mergeFrom((context.ContextOuterClass.SliceEvent)other);
+        if (other instanceof context.ContextOuterClass.SliceConfig) {
+          return mergeFrom((context.ContextOuterClass.SliceConfig)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());
+      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.unknownFields);
         onChanged();
@@ -43801,11 +34560,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.SliceEvent parsedMessage = null;
+        context.ContextOuterClass.SliceConfig parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -43814,243 +34573,246 @@ public final class ContextOuterClass {
         }
         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_;
 
-      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.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
+      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+        if (configRulesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(configRules_);
+        } else {
+          return configRulesBuilder_.getMessageList();
+        }
       }
       /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+      public int getConfigRulesCount() {
+        if (configRulesBuilder_ == null) {
+          return configRules_.size();
         } else {
-          return eventBuilder_.getMessage();
+          return configRulesBuilder_.getCount();
         }
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
+      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();
           }
-          event_ = value;
+          ensureConfigRulesIsMutable();
+          configRules_.set(index, value);
           onChanged();
         } else {
-          eventBuilder_.setMessage(value);
+          configRulesBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
+      public Builder setConfigRules(
+          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.set(index, builderForValue.build());
           onChanged();
         } else {
-          eventBuilder_.setMessage(builderForValue.build());
+          configRulesBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
+      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
+        if (configRulesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureConfigRulesIsMutable();
+          configRules_.add(value);
           onChanged();
         } else {
-          eventBuilder_.mergeFrom(value);
+          configRulesBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
+      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 {
-          event_ = null;
-          eventBuilder_ = null;
+          configRulesBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
+      public Builder addConfigRules(
+          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.add(builderForValue.build());
+          onChanged();
         } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
+          configRulesBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ConfigRule config_rules = 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;
+      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 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 sliceIdBuilder_ != null || sliceId_ != null;
+        return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       * @return The sliceId.
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+      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 {
-          return sliceIdBuilder_.getMessage();
+          configRulesBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
+      public Builder clearConfigRules() {
+        if (configRulesBuilder_ == null) {
+          configRules_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          sliceIdBuilder_.setMessage(value);
+          configRulesBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
+      public Builder removeConfigRules(int index) {
+        if (configRulesBuilder_ == null) {
+          ensureConfigRulesIsMutable();
+          configRules_.remove(index);
           onChanged();
         } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
+          configRulesBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdBuilder_.mergeFrom(value);
+      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);
         }
-
-        return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-          onChanged();
+      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
+           getConfigRulesOrBuilderList() {
+        if (configRulesBuilder_ != null) {
+          return configRulesBuilder_.getMessageOrBuilderList();
         } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
+          return java.util.Collections.unmodifiableList(configRules_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
+      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
+        return getConfigRulesFieldBuilder().addBuilder(
+            context.ContextOuterClass.ConfigRule.getDefaultInstance());
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        }
+      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
+          int index) {
+        return getConfigRulesFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
       }
       /**
-       * <code>.context.SliceId slice_id = 2;</code>
+       * <code>repeated .context.ConfigRule config_rules = 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(),
+      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());
-          sliceId_ = null;
+          configRules_ = null;
         }
-        return sliceIdBuilder_;
+        return configRulesBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -44065,89 +34827,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.SliceEvent)
+      // @@protoc_insertion_point(builder_scope:context.SliceConfig)
     }
 
-    // @@protoc_insertion_point(class_scope:context.SliceEvent)
-    private static final context.ContextOuterClass.SliceEvent DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceConfig)
+    private static final context.ContextOuterClass.SliceConfig DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceEvent();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceConfig();
     }
 
-    public static context.ContextOuterClass.SliceEvent getDefaultInstance() {
+    public static context.ContextOuterClass.SliceConfig getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<SliceEvent>
-        PARSER = new com.google.protobuf.AbstractParser<SliceEvent>() {
+    private static final com.google.protobuf.Parser<SliceConfig>
+        PARSER = new com.google.protobuf.AbstractParser<SliceConfig>() {
       @java.lang.Override
-      public SliceEvent parsePartialFrom(
+      public SliceConfig parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceEvent(input, extensionRegistry);
+        return new SliceConfig(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<SliceEvent> parser() {
+    public static com.google.protobuf.Parser<SliceConfig> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SliceEvent> getParserForType() {
+    public com.google.protobuf.Parser<SliceConfig> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionId)
+  public interface SliceIdListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceIdList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return Whether the connectionUuid field is set.
+     * <code>repeated .context.SliceId slice_ids = 1;</code>
      */
-    boolean hasConnectionUuid();
+    java.util.List<context.ContextOuterClass.SliceId> 
+        getSliceIdsList();
     /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return The connectionUuid.
+     * <code>repeated .context.SliceId slice_ids = 1;</code>
      */
-    context.ContextOuterClass.Uuid getConnectionUuid();
+    context.ContextOuterClass.SliceId getSliceIds(int index);
     /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
+     * <code>repeated .context.SliceId slice_ids = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder();
+    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);
   }
   /**
-   * <pre>
-   * ----- Connection ----------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.ConnectionId}
+   * Protobuf type {@code context.SliceIdList}
    */
-  public static final class ConnectionId extends
+  public static final class SliceIdList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionId)
-      ConnectionIdOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceIdList)
+      SliceIdListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionId.newBuilder() to construct.
-    private ConnectionId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceIdList.newBuilder() to construct.
+    private SliceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionId() {
+    private SliceIdList() {
+      sliceIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionId();
+      return new SliceIdList();
     }
 
     @java.lang.Override
@@ -44155,7 +34923,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionId(
+    private SliceIdList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -44163,6 +34931,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -44174,16 +34943,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (connectionUuid_ != null) {
-                subBuilder = connectionUuid_.toBuilder();
-              }
-              connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionUuid_);
-                connectionUuid_ = subBuilder.buildPartial();
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                mutable_bitField0_ |= 0x00000001;
               }
-
+              sliceIds_.add(
+                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -44201,47 +34966,64 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
+              context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
     }
 
-    public static final int CONNECTION_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid connectionUuid_;
+    public static final int SLICE_IDS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
     /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return Whether the connectionUuid field is set.
+     * <code>repeated .context.SliceId slice_ids = 1;</code>
      */
     @java.lang.Override
-    public boolean hasConnectionUuid() {
-      return connectionUuid_ != null;
+    public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
+      return sliceIds_;
     }
     /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return The connectionUuid.
+     * <code>repeated .context.SliceId slice_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getConnectionUuid() {
-      return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
+        getSliceIdsOrBuilderList() {
+      return sliceIds_;
     }
     /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
+     * <code>repeated .context.SliceId slice_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-      return getConnectionUuid();
+    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;
@@ -44258,8 +35040,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (connectionUuid_ != null) {
-        output.writeMessage(1, getConnectionUuid());
+      for (int i = 0; i < sliceIds_.size(); i++) {
+        output.writeMessage(1, sliceIds_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -44270,9 +35052,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (connectionUuid_ != null) {
+      for (int i = 0; i < sliceIds_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getConnectionUuid());
+          .computeMessageSize(1, sliceIds_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -44284,16 +35066,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionId)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceIdList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionId other = (context.ContextOuterClass.ConnectionId) obj;
+      context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
 
-      if (hasConnectionUuid() != other.hasConnectionUuid()) return false;
-      if (hasConnectionUuid()) {
-        if (!getConnectionUuid()
-            .equals(other.getConnectionUuid())) return false;
-      }
+      if (!getSliceIdsList()
+          .equals(other.getSliceIdsList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -44305,78 +35084,78 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasConnectionUuid()) {
-        hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionUuid().hashCode();
+      if (getSliceIdsCount() > 0) {
+        hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
+        hash = (53 * hash) + getSliceIdsList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionId parseFrom(
+    public static context.ContextOuterClass.SliceIdList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
+    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.ConnectionId parseFrom(
+    public static context.ContextOuterClass.SliceIdList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
+    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.ConnectionId parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
+    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.ConnectionId parseFrom(java.io.InputStream input)
+    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.ConnectionId parseFrom(
+    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.ConnectionId parseDelimitedFrom(java.io.InputStream input)
+    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.ConnectionId parseDelimitedFrom(
+    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.ConnectionId parseFrom(
+    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.ConnectionId parseFrom(
+    public static context.ContextOuterClass.SliceIdList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -44389,7 +35168,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionId prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceIdList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -44405,30 +35184,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * <pre>
-     * ----- Connection ----------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.ConnectionId}
+     * Protobuf type {@code context.SliceIdList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionId)
-        context.ContextOuterClass.ConnectionIdOrBuilder {
+        // @@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_ConnectionId_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
+                context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
+      // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -44441,16 +35216,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getSliceIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (connectionUuidBuilder_ == null) {
-          connectionUuid_ = null;
+        if (sliceIdsBuilder_ == null) {
+          sliceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          connectionUuid_ = null;
-          connectionUuidBuilder_ = null;
+          sliceIdsBuilder_.clear();
         }
         return this;
       }
@@ -44458,17 +35234,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionId.getDefaultInstance();
+      public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceIdList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionId build() {
-        context.ContextOuterClass.ConnectionId result = buildPartial();
+      public context.ContextOuterClass.SliceIdList build() {
+        context.ContextOuterClass.SliceIdList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -44476,12 +35252,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionId buildPartial() {
-        context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
-        if (connectionUuidBuilder_ == null) {
-          result.connectionUuid_ = connectionUuid_;
+      public context.ContextOuterClass.SliceIdList buildPartial() {
+        context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
+        int from_bitField0_ = bitField0_;
+        if (sliceIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.sliceIds_ = sliceIds_;
         } else {
-          result.connectionUuid_ = connectionUuidBuilder_.build();
+          result.sliceIds_ = sliceIdsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -44521,18 +35302,41 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionId) {
-          return mergeFrom((context.ContextOuterClass.ConnectionId)other);
+        if (other instanceof context.ContextOuterClass.SliceIdList) {
+          return mergeFrom((context.ContextOuterClass.SliceIdList)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());
+      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.unknownFields);
         onChanged();
@@ -44549,11 +35353,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionId parsedMessage = null;
+        context.ContextOuterClass.SliceIdList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -44562,124 +35366,246 @@ public final class ContextOuterClass {
         }
         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_;
 
-      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.
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public boolean hasConnectionUuid() {
-        return connectionUuidBuilder_ != null || connectionUuid_ != null;
+      public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
+        if (sliceIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(sliceIds_);
+        } else {
+          return sliceIdsBuilder_.getMessageList();
+        }
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       * @return The connectionUuid.
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public context.ContextOuterClass.Uuid getConnectionUuid() {
-        if (connectionUuidBuilder_ == null) {
-          return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+      public int getSliceIdsCount() {
+        if (sliceIdsBuilder_ == null) {
+          return sliceIds_.size();
         } else {
-          return connectionUuidBuilder_.getMessage();
+          return sliceIdsBuilder_.getCount();
         }
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public Builder setConnectionUuid(context.ContextOuterClass.Uuid value) {
-        if (connectionUuidBuilder_ == null) {
+      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();
           }
-          connectionUuid_ = value;
+          ensureSliceIdsIsMutable();
+          sliceIds_.set(index, value);
           onChanged();
         } else {
-          connectionUuidBuilder_.setMessage(value);
+          sliceIdsBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public Builder setConnectionUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (connectionUuidBuilder_ == null) {
-          connectionUuid_ = builderForValue.build();
+      public Builder setSliceIds(
+          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceIdsBuilder_ == null) {
+          ensureSliceIdsIsMutable();
+          sliceIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          connectionUuidBuilder_.setMessage(builderForValue.build());
+          sliceIdsBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
-        if (connectionUuidBuilder_ == null) {
-          if (connectionUuid_ != null) {
-            connectionUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
-          } else {
-            connectionUuid_ = value;
+      public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
+        if (sliceIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureSliceIdsIsMutable();
+          sliceIds_.add(value);
           onChanged();
         } else {
-          connectionUuidBuilder_.mergeFrom(value);
+          sliceIdsBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public Builder clearConnectionUuid() {
-        if (connectionUuidBuilder_ == null) {
-          connectionUuid_ = null;
+      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 {
-          connectionUuid_ = null;
-          connectionUuidBuilder_ = null;
+          sliceIdsBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
-        
-        onChanged();
-        return getConnectionUuidFieldBuilder().getBuilder();
+      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>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 1;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-        if (connectionUuidBuilder_ != null) {
-          return connectionUuidBuilder_.getMessageOrBuilder();
+      public Builder addSliceIds(
+          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceIdsBuilder_ == null) {
+          ensureSliceIdsIsMutable();
+          sliceIds_.add(index, builderForValue.build());
+          onChanged();
         } else {
-          return connectionUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+          sliceIdsBuilder_.addMessage(index, builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
+       * <code>repeated .context.SliceId slice_ids = 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(),
+      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());
-          connectionUuid_ = null;
+          sliceIds_ = null;
         }
-        return connectionUuidBuilder_;
+        return sliceIdsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -44694,83 +35620,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionId)
+      // @@protoc_insertion_point(builder_scope:context.SliceIdList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionId)
-    private static final context.ContextOuterClass.ConnectionId DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceIdList)
+    private static final context.ContextOuterClass.SliceIdList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionId();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceIdList();
     }
 
-    public static context.ContextOuterClass.ConnectionId getDefaultInstance() {
+    public static context.ContextOuterClass.SliceIdList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionId>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionId>() {
+    private static final com.google.protobuf.Parser<SliceIdList>
+        PARSER = new com.google.protobuf.AbstractParser<SliceIdList>() {
       @java.lang.Override
-      public ConnectionId parsePartialFrom(
+      public SliceIdList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionId(input, extensionRegistry);
+        return new SliceIdList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionId> parser() {
+    public static com.google.protobuf.Parser<SliceIdList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionId> getParserForType() {
+    public com.google.protobuf.Parser<SliceIdList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionSettings_L0OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L0)
+  public interface SliceListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The lspSymbolicName.
+     * <code>repeated .context.Slice slices = 1;</code>
      */
-    java.lang.String getLspSymbolicName();
+    java.util.List<context.ContextOuterClass.Slice> 
+        getSlicesList();
     /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The bytes for lspSymbolicName.
+     * <code>repeated .context.Slice slices = 1;</code>
      */
-    com.google.protobuf.ByteString
-        getLspSymbolicNameBytes();
+    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.ConnectionSettings_L0}
+   * Protobuf type {@code context.SliceList}
    */
-  public static final class ConnectionSettings_L0 extends
+  public static final class SliceList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L0)
-      ConnectionSettings_L0OrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceList)
+      SliceListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L0.newBuilder() to construct.
-    private ConnectionSettings_L0(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceList.newBuilder() to construct.
+    private SliceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionSettings_L0() {
-      lspSymbolicName_ = "";
+    private SliceList() {
+      slices_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L0();
+      return new SliceList();
     }
 
     @java.lang.Override
@@ -44778,7 +35716,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionSettings_L0(
+    private SliceList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -44786,6 +35724,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -44797,9 +35736,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              lspSymbolicName_ = s;
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              slices_.add(
+                  input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -44817,59 +35759,64 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          slices_ = java.util.Collections.unmodifiableList(slices_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
+              context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
     }
 
-    public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
-    private volatile java.lang.Object lspSymbolicName_;
+    public static final int SLICES_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.Slice> slices_;
     /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The lspSymbolicName.
+     * <code>repeated .context.Slice slices = 1;</code>
      */
     @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;
-      }
+    public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
+      return slices_;
     }
     /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The bytes for lspSymbolicName.
+     * <code>repeated .context.Slice slices = 1;</code>
      */
     @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;
-      }
+    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;
@@ -44886,8 +35833,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!getLspSymbolicNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
+      for (int i = 0; i < slices_.size(); i++) {
+        output.writeMessage(1, slices_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -44898,8 +35845,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (!getLspSymbolicNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
+      for (int i = 0; i < slices_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, slices_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -44911,13 +35859,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L0)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
+      context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
 
-      if (!getLspSymbolicName()
-          .equals(other.getLspSymbolicName())) return false;
+      if (!getSlicesList()
+          .equals(other.getSlicesList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -44929,76 +35877,78 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getLspSymbolicName().hashCode();
+      if (getSlicesCount() > 0) {
+        hash = (37 * hash) + SLICES_FIELD_NUMBER;
+        hash = (53 * hash) + getSlicesList().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
+    public static context.ContextOuterClass.SliceList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
+    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.ConnectionSettings_L0 parseFrom(
+    public static context.ContextOuterClass.SliceList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
+    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.ConnectionSettings_L0 parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
+    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.ConnectionSettings_L0 parseFrom(java.io.InputStream input)
+    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.ConnectionSettings_L0 parseFrom(
+    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.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input)
+    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.ConnectionSettings_L0 parseDelimitedFrom(
+    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.ConnectionSettings_L0 parseFrom(
+    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.ConnectionSettings_L0 parseFrom(
+    public static context.ContextOuterClass.SliceList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -45011,7 +35961,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L0 prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -45027,26 +35977,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionSettings_L0}
+     * Protobuf type {@code context.SliceList}
      */
     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 {
+        // @@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_ConnectionSettings_L0_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
+                context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
+      // Construct using context.ContextOuterClass.SliceList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -45059,30 +36009,35 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getSlicesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        lspSymbolicName_ = "";
-
+        if (slicesBuilder_ == null) {
+          slices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          slicesBuilder_.clear();
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance();
+      public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L0 build() {
-        context.ContextOuterClass.ConnectionSettings_L0 result = buildPartial();
+      public context.ContextOuterClass.SliceList build() {
+        context.ContextOuterClass.SliceList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -45090,9 +36045,18 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
-        result.lspSymbolicName_ = lspSymbolicName_;
+      public context.ContextOuterClass.SliceList buildPartial() {
+        context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
+        int from_bitField0_ = bitField0_;
+        if (slicesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            slices_ = java.util.Collections.unmodifiableList(slices_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.slices_ = slices_;
+        } else {
+          result.slices_ = slicesBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -45131,19 +36095,41 @@ public final class ContextOuterClass {
       }
       @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);
+        if (other instanceof context.ContextOuterClass.SliceList) {
+          return mergeFrom((context.ContextOuterClass.SliceList)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_;
-          onChanged();
+      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.unknownFields);
         onChanged();
@@ -45160,11 +36146,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
+        context.ContextOuterClass.SliceList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -45173,81 +36159,246 @@ public final class ContextOuterClass {
         }
         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_;
 
-      private java.lang.Object lspSymbolicName_ = "";
       /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @return The lspSymbolicName.
+       * <code>repeated .context.Slice slices = 1;</code>
        */
-      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;
+      public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
+        if (slicesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(slices_);
         } else {
-          return (java.lang.String) ref;
+          return slicesBuilder_.getMessageList();
         }
       }
       /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @return The bytes for lspSymbolicName.
+       * <code>repeated .context.Slice slices = 1;</code>
        */
-      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;
+      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 (com.google.protobuf.ByteString) ref;
+          return java.util.Collections.unmodifiableList(slices_);
         }
       }
       /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @param value The lspSymbolicName to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.Slice slices = 1;</code>
        */
-      public Builder setLspSymbolicName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        lspSymbolicName_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.Slice.Builder addSlicesBuilder() {
+        return getSlicesFieldBuilder().addBuilder(
+            context.ContextOuterClass.Slice.getDefaultInstance());
       }
       /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.Slice slices = 1;</code>
        */
-      public Builder clearLspSymbolicName() {
-        
-        lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
-        onChanged();
-        return this;
+      public context.ContextOuterClass.Slice.Builder addSlicesBuilder(
+          int index) {
+        return getSlicesFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Slice.getDefaultInstance());
       }
       /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @param value The bytes for lspSymbolicName to set.
-       * @return This builder for chaining.
+       * <code>repeated .context.Slice slices = 1;</code>
        */
-      public Builder setLspSymbolicNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        lspSymbolicName_ = value;
-        onChanged();
-        return this;
+      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(
@@ -45262,120 +36413,100 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L0)
+      // @@protoc_insertion_point(builder_scope:context.SliceList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L0)
-    private static final context.ContextOuterClass.ConnectionSettings_L0 DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceList)
+    private static final context.ContextOuterClass.SliceList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L0();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceList();
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstance() {
+    public static context.ContextOuterClass.SliceList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L0>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L0>() {
+    private static final com.google.protobuf.Parser<SliceList>
+        PARSER = new com.google.protobuf.AbstractParser<SliceList>() {
       @java.lang.Override
-      public ConnectionSettings_L0 parsePartialFrom(
+      public SliceList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L0(input, extensionRegistry);
+        return new SliceList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionSettings_L0> parser() {
+    public static com.google.protobuf.Parser<SliceList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L0> getParserForType() {
+    public com.google.protobuf.Parser<SliceList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionSettings_L2OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L2)
+  public interface SliceEventOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.SliceEvent)
       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.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
-    java.lang.String getDstMacAddress();
+    boolean hasEvent();
     /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The bytes for dstMacAddress.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
-    com.google.protobuf.ByteString
-        getDstMacAddressBytes();
-
+    context.ContextOuterClass.Event getEvent();
     /**
-     * <code>uint32 ether_type = 3;</code>
-     * @return The etherType.
+     * <code>.context.Event event = 1;</code>
      */
-    int getEtherType();
+    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
 
     /**
-     * <code>uint32 vlan_id = 4;</code>
-     * @return The vlanId.
+     * <code>.context.SliceId slice_id = 2;</code>
+     * @return Whether the sliceId field is set.
      */
-    int getVlanId();
-
+    boolean hasSliceId();
     /**
-     * <code>uint32 mpls_label = 5;</code>
-     * @return The mplsLabel.
+     * <code>.context.SliceId slice_id = 2;</code>
+     * @return The sliceId.
      */
-    int getMplsLabel();
-
+    context.ContextOuterClass.SliceId getSliceId();
     /**
-     * <code>uint32 mpls_traffic_class = 6;</code>
-     * @return The mplsTrafficClass.
+     * <code>.context.SliceId slice_id = 2;</code>
      */
-    int getMplsTrafficClass();
+    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
   }
   /**
-   * Protobuf type {@code context.ConnectionSettings_L2}
+   * Protobuf type {@code context.SliceEvent}
    */
-  public static final class ConnectionSettings_L2 extends
+  public static final class SliceEvent extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L2)
-      ConnectionSettings_L2OrBuilder {
+      // @@protoc_insertion_point(message_implements:context.SliceEvent)
+      SliceEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L2.newBuilder() to construct.
-    private ConnectionSettings_L2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use SliceEvent.newBuilder() to construct.
+    private SliceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionSettings_L2() {
-      srcMacAddress_ = "";
-      dstMacAddress_ = "";
+    private SliceEvent() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L2();
+      return new SliceEvent();
     }
 
     @java.lang.Override
@@ -45383,7 +36514,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionSettings_L2(
+    private SliceEvent(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -45402,35 +36533,29 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
+              context.ContextOuterClass.Event.Builder subBuilder = null;
+              if (event_ != null) {
+                subBuilder = event_.toBuilder();
+              }
+              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(event_);
+                event_ = subBuilder.buildPartial();
+              }
 
-              srcMacAddress_ = s;
               break;
             }
             case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              dstMacAddress_ = s;
-              break;
-            }
-            case 24: {
-
-              etherType_ = input.readUInt32();
-              break;
-            }
-            case 32: {
-
-              vlanId_ = input.readUInt32();
-              break;
-            }
-            case 40: {
-
-              mplsLabel_ = input.readUInt32();
-              break;
-            }
-            case 48: {
+              context.ContextOuterClass.SliceId.Builder subBuilder = null;
+              if (sliceId_ != null) {
+                subBuilder = sliceId_.toBuilder();
+              }
+              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(sliceId_);
+                sliceId_ = subBuilder.buildPartial();
+              }
 
-              mplsTrafficClass_ = input.readUInt32();
               break;
             }
             default: {
@@ -45454,135 +36579,67 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
+      return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
-    }
-
-    public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
-    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;
-      }
+              context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
     }
 
-    public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
-    private volatile java.lang.Object dstMacAddress_;
+    public static final int EVENT_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Event event_;
     /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The dstMacAddress.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
     @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;
-      }
+    public boolean hasEvent() {
+      return event_ != null;
     }
     /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The bytes for dstMacAddress.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
     @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 context.ContextOuterClass.Event getEvent() {
+      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
-
-    public static final int ETHER_TYPE_FIELD_NUMBER = 3;
-    private int etherType_;
     /**
-     * <code>uint32 ether_type = 3;</code>
-     * @return The etherType.
+     * <code>.context.Event event = 1;</code>
      */
     @java.lang.Override
-    public int getEtherType() {
-      return etherType_;
+    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+      return getEvent();
     }
 
-    public static final int VLAN_ID_FIELD_NUMBER = 4;
-    private int vlanId_;
+    public static final int SLICE_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.SliceId sliceId_;
     /**
-     * <code>uint32 vlan_id = 4;</code>
-     * @return The vlanId.
+     * <code>.context.SliceId slice_id = 2;</code>
+     * @return Whether the sliceId field is set.
      */
     @java.lang.Override
-    public int getVlanId() {
-      return vlanId_;
+    public boolean hasSliceId() {
+      return sliceId_ != null;
     }
-
-    public static final int MPLS_LABEL_FIELD_NUMBER = 5;
-    private int mplsLabel_;
     /**
-     * <code>uint32 mpls_label = 5;</code>
-     * @return The mplsLabel.
+     * <code>.context.SliceId slice_id = 2;</code>
+     * @return The sliceId.
      */
     @java.lang.Override
-    public int getMplsLabel() {
-      return mplsLabel_;
+    public context.ContextOuterClass.SliceId getSliceId() {
+      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
     }
-
-    public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
-    private int mplsTrafficClass_;
     /**
-     * <code>uint32 mpls_traffic_class = 6;</code>
-     * @return The mplsTrafficClass.
+     * <code>.context.SliceId slice_id = 2;</code>
      */
     @java.lang.Override
-    public int getMplsTrafficClass() {
-      return mplsTrafficClass_;
+    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+      return getSliceId();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -45599,23 +36656,11 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!getSrcMacAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
-      }
-      if (!getDstMacAddressBytes().isEmpty()) {
-        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 (event_ != null) {
+        output.writeMessage(1, getEvent());
       }
-      if (mplsTrafficClass_ != 0) {
-        output.writeUInt32(6, mplsTrafficClass_);
+      if (sliceId_ != null) {
+        output.writeMessage(2, getSliceId());
       }
       unknownFields.writeTo(output);
     }
@@ -45626,27 +36671,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (!getSrcMacAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
-      }
-      if (!getDstMacAddressBytes().isEmpty()) {
-        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) {
+      if (event_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(5, mplsLabel_);
+          .computeMessageSize(1, getEvent());
       }
-      if (mplsTrafficClass_ != 0) {
+      if (sliceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(6, mplsTrafficClass_);
+          .computeMessageSize(2, getSliceId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -45658,23 +36689,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L2)) {
+      if (!(obj instanceof context.ContextOuterClass.SliceEvent)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionSettings_L2 other = (context.ContextOuterClass.ConnectionSettings_L2) obj;
+      context.ContextOuterClass.SliceEvent other = (context.ContextOuterClass.SliceEvent) 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 (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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -45686,86 +36715,82 @@ public final class ContextOuterClass {
       }
       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();
+      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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
+    public static context.ContextOuterClass.SliceEvent parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
+    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.ConnectionSettings_L2 parseFrom(
+    public static context.ContextOuterClass.SliceEvent parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
+    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.ConnectionSettings_L2 parseFrom(byte[] data)
+    public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
+    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.ConnectionSettings_L2 parseFrom(java.io.InputStream input)
+    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.ConnectionSettings_L2 parseFrom(
+    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.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input)
+    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.ConnectionSettings_L2 parseDelimitedFrom(
+    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.ConnectionSettings_L2 parseFrom(
+    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.ConnectionSettings_L2 parseFrom(
+    public static context.ContextOuterClass.SliceEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -45778,7 +36803,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L2 prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.SliceEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -45794,26 +36819,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionSettings_L2}
+     * Protobuf type {@code context.SliceEvent}
      */
     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 {
+        // @@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_ConnectionSettings_L2_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
+                context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
+      // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -45831,50 +36856,54 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        srcMacAddress_ = "";
-
-        dstMacAddress_ = "";
-
-        etherType_ = 0;
-
-        vlanId_ = 0;
-
-        mplsLabel_ = 0;
-
-        mplsTrafficClass_ = 0;
-
+        if (eventBuilder_ == null) {
+          event_ = null;
+        } else {
+          event_ = null;
+          eventBuilder_ = null;
+        }
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = null;
+        } else {
+          sliceId_ = null;
+          sliceIdBuilder_ = null;
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
+        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance();
+      public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
+        return context.ContextOuterClass.SliceEvent.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L2 build() {
-        context.ContextOuterClass.ConnectionSettings_L2 result = buildPartial();
+      public context.ContextOuterClass.SliceEvent build() {
+        context.ContextOuterClass.SliceEvent 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);
-        result.srcMacAddress_ = srcMacAddress_;
-        result.dstMacAddress_ = dstMacAddress_;
-        result.etherType_ = etherType_;
-        result.vlanId_ = vlanId_;
-        result.mplsLabel_ = mplsLabel_;
-        result.mplsTrafficClass_ = mplsTrafficClass_;
+        return result;
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.SliceEvent buildPartial() {
+        context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
+        if (eventBuilder_ == null) {
+          result.event_ = event_;
+        } else {
+          result.event_ = eventBuilder_.build();
+        }
+        if (sliceIdBuilder_ == null) {
+          result.sliceId_ = sliceId_;
+        } else {
+          result.sliceId_ = sliceIdBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -45913,35 +36942,21 @@ public final class ContextOuterClass {
       }
       @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);
+        if (other instanceof context.ContextOuterClass.SliceEvent) {
+          return mergeFrom((context.ContextOuterClass.SliceEvent)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_;
-          onChanged();
-        }
-        if (!other.getDstMacAddress().isEmpty()) {
-          dstMacAddress_ = other.dstMacAddress_;
-          onChanged();
-        }
-        if (other.getEtherType() != 0) {
-          setEtherType(other.getEtherType());
-        }
-        if (other.getVlanId() != 0) {
-          setVlanId(other.getVlanId());
-        }
-        if (other.getMplsLabel() != 0) {
-          setMplsLabel(other.getMplsLabel());
+      public Builder mergeFrom(context.ContextOuterClass.SliceEvent other) {
+        if (other == context.ContextOuterClass.SliceEvent.getDefaultInstance()) return this;
+        if (other.hasEvent()) {
+          mergeEvent(other.getEvent());
         }
-        if (other.getMplsTrafficClass() != 0) {
-          setMplsTrafficClass(other.getMplsTrafficClass());
+        if (other.hasSliceId()) {
+          mergeSliceId(other.getSliceId());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -45958,11 +36973,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
+        context.ContextOuterClass.SliceEvent parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -45972,280 +36987,242 @@ public final class ContextOuterClass {
         return this;
       }
 
-      private java.lang.Object srcMacAddress_ = "";
+      private context.ContextOuterClass.Event event_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
       /**
-       * <code>string src_mac_address = 1;</code>
-       * @return The srcMacAddress.
+       * <code>.context.Event event = 1;</code>
+       * @return Whether the event field is set.
        */
-      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;
-        }
+      public boolean hasEvent() {
+        return eventBuilder_ != null || event_ != null;
       }
       /**
-       * <code>string src_mac_address = 1;</code>
-       * @return The bytes for srcMacAddress.
+       * <code>.context.Event event = 1;</code>
+       * @return The event.
        */
-      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;
+      public context.ContextOuterClass.Event getEvent() {
+        if (eventBuilder_ == null) {
+          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          return eventBuilder_.getMessage();
         }
       }
       /**
-       * <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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcMacAddress() {
-        
-        srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @param value The bytes for srcMacAddress to set.
-       * @return This builder for chaining.
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setSrcMacAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        srcMacAddress_ = value;
-        onChanged();
+      public Builder setEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          event_ = value;
+          onChanged();
+        } else {
+          eventBuilder_.setMessage(value);
+        }
+
         return this;
       }
-
-      private java.lang.Object dstMacAddress_ = "";
       /**
-       * <code>string dst_mac_address = 2;</code>
-       * @return The dstMacAddress.
+       * <code>.context.Event event = 1;</code>
        */
-      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;
+      public Builder setEvent(
+          context.ContextOuterClass.Event.Builder builderForValue) {
+        if (eventBuilder_ == null) {
+          event_ = builderForValue.build();
+          onChanged();
         } else {
-          return (java.lang.String) ref;
+          eventBuilder_.setMessage(builderForValue.build());
         }
+
+        return this;
       }
       /**
-       * <code>string dst_mac_address = 2;</code>
-       * @return The bytes for dstMacAddress.
+       * <code>.context.Event event = 1;</code>
        */
-      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;
+      public Builder mergeEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (event_ != null) {
+            event_ =
+              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+          } else {
+            event_ = value;
+          }
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          eventBuilder_.mergeFrom(value);
         }
-      }
-      /**
-       * <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;
-        onChanged();
+
         return this;
       }
       /**
-       * <code>string dst_mac_address = 2;</code>
-       * @return This builder for chaining.
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder clearDstMacAddress() {
-        
-        dstMacAddress_ = getDefaultInstance().getDstMacAddress();
-        onChanged();
+      public Builder clearEvent() {
+        if (eventBuilder_ == null) {
+          event_ = null;
+          onChanged();
+        } else {
+          event_ = null;
+          eventBuilder_ = null;
+        }
+
         return this;
       }
       /**
-       * <code>string dst_mac_address = 2;</code>
-       * @param value The bytes for dstMacAddress to set.
-       * @return This builder for chaining.
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setDstMacAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
+      public context.ContextOuterClass.Event.Builder getEventBuilder() {
         
-        dstMacAddress_ = value;
         onChanged();
-        return this;
+        return getEventFieldBuilder().getBuilder();
       }
-
-      private int etherType_ ;
       /**
-       * <code>uint32 ether_type = 3;</code>
-       * @return The etherType.
+       * <code>.context.Event event = 1;</code>
        */
-      @java.lang.Override
-      public int getEtherType() {
-        return etherType_;
+      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+        if (eventBuilder_ != null) {
+          return eventBuilder_.getMessageOrBuilder();
+        } else {
+          return event_ == null ?
+              context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
       }
       /**
-       * <code>uint32 ether_type = 3;</code>
-       * @param value The etherType to set.
-       * @return This builder for chaining.
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setEtherType(int value) {
-        
-        etherType_ = value;
-        onChanged();
-        return this;
+      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>uint32 ether_type = 3;</code>
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
+       * @return Whether the sliceId field is set.
        */
-      public Builder clearEtherType() {
-        
-        etherType_ = 0;
-        onChanged();
-        return this;
+      public boolean hasSliceId() {
+        return sliceIdBuilder_ != null || sliceId_ != null;
       }
-
-      private int vlanId_ ;
       /**
-       * <code>uint32 vlan_id = 4;</code>
-       * @return The vlanId.
+       * <code>.context.SliceId slice_id = 2;</code>
+       * @return The sliceId.
        */
-      @java.lang.Override
-      public int getVlanId() {
-        return vlanId_;
+      public context.ContextOuterClass.SliceId getSliceId() {
+        if (sliceIdBuilder_ == null) {
+          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        } else {
+          return sliceIdBuilder_.getMessage();
+        }
       }
       /**
-       * <code>uint32 vlan_id = 4;</code>
-       * @param value The vlanId to set.
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      public Builder setVlanId(int value) {
-        
-        vlanId_ = value;
-        onChanged();
+      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
+        if (sliceIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          sliceId_ = value;
+          onChanged();
+        } else {
+          sliceIdBuilder_.setMessage(value);
+        }
+
         return this;
       }
       /**
-       * <code>uint32 vlan_id = 4;</code>
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      public Builder clearVlanId() {
-        
-        vlanId_ = 0;
-        onChanged();
+      public Builder setSliceId(
+          context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          sliceIdBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
-
-      private int mplsLabel_ ;
       /**
-       * <code>uint32 mpls_label = 5;</code>
-       * @return The mplsLabel.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      @java.lang.Override
-      public int getMplsLabel() {
-        return mplsLabel_;
+      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
+        if (sliceIdBuilder_ == null) {
+          if (sliceId_ != null) {
+            sliceId_ =
+              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+          } else {
+            sliceId_ = value;
+          }
+          onChanged();
+        } else {
+          sliceIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
       }
       /**
-       * <code>uint32 mpls_label = 5;</code>
-       * @param value The mplsLabel to set.
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      public Builder setMplsLabel(int value) {
-        
-        mplsLabel_ = value;
-        onChanged();
+      public Builder clearSliceId() {
+        if (sliceIdBuilder_ == null) {
+          sliceId_ = null;
+          onChanged();
+        } else {
+          sliceId_ = null;
+          sliceIdBuilder_ = null;
+        }
+
         return this;
       }
       /**
-       * <code>uint32 mpls_label = 5;</code>
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      public Builder clearMplsLabel() {
+      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
         
-        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_;
+        return getSliceIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>uint32 mpls_traffic_class = 6;</code>
-       * @param value The mplsTrafficClass to set.
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      public Builder setMplsTrafficClass(int value) {
-        
-        mplsTrafficClass_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+        if (sliceIdBuilder_ != null) {
+          return sliceIdBuilder_.getMessageOrBuilder();
+        } else {
+          return sliceId_ == null ?
+              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
       }
       /**
-       * <code>uint32 mpls_traffic_class = 6;</code>
-       * @return This builder for chaining.
+       * <code>.context.SliceId slice_id = 2;</code>
        */
-      public Builder clearMplsTrafficClass() {
-        
-        mplsTrafficClass_ = 0;
-        onChanged();
-        return this;
+      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(
@@ -46260,114 +37237,89 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L2)
+      // @@protoc_insertion_point(builder_scope:context.SliceEvent)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L2)
-    private static final context.ContextOuterClass.ConnectionSettings_L2 DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.SliceEvent)
+    private static final context.ContextOuterClass.SliceEvent DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L2();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceEvent();
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstance() {
+    public static context.ContextOuterClass.SliceEvent getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L2>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L2>() {
+    private static final com.google.protobuf.Parser<SliceEvent>
+        PARSER = new com.google.protobuf.AbstractParser<SliceEvent>() {
       @java.lang.Override
-      public ConnectionSettings_L2 parsePartialFrom(
+      public SliceEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L2(input, extensionRegistry);
+        return new SliceEvent(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionSettings_L2> parser() {
+    public static com.google.protobuf.Parser<SliceEvent> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L2> getParserForType() {
+    public com.google.protobuf.Parser<SliceEvent> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
+    public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionSettings_L3OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L3)
+  public interface ConnectionIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionId)
       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.
+     * <code>.context.Uuid connection_uuid = 1;</code>
+     * @return Whether the connectionUuid field is set.
      */
-    int getDscp();
-
+    boolean hasConnectionUuid();
     /**
-     * <code>uint32 protocol = 4;</code>
-     * @return The protocol.
+     * <code>.context.Uuid connection_uuid = 1;</code>
+     * @return The connectionUuid.
      */
-    int getProtocol();
-
+    context.ContextOuterClass.Uuid getConnectionUuid();
     /**
-     * <code>uint32 ttl = 5;</code>
-     * @return The ttl.
+     * <code>.context.Uuid connection_uuid = 1;</code>
      */
-    int getTtl();
+    context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder();
   }
   /**
-   * Protobuf type {@code context.ConnectionSettings_L3}
+   * <pre>
+   * ----- Connection ----------------------------------------------------------------------------------------------------
+   * </pre>
+   *
+   * Protobuf type {@code context.ConnectionId}
    */
-  public static final class ConnectionSettings_L3 extends
+  public static final class ConnectionId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L3)
-      ConnectionSettings_L3OrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionId)
+      ConnectionIdOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L3.newBuilder() to construct.
-    private ConnectionSettings_L3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionId.newBuilder() to construct.
+    private ConnectionId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionSettings_L3() {
-      srcIpAddress_ = "";
-      dstIpAddress_ = "";
+    private ConnectionId() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L3();
+      return new ConnectionId();
     }
 
     @java.lang.Override
@@ -46375,7 +37327,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionSettings_L3(
+    private ConnectionId(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -46394,30 +37346,16 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              srcIpAddress_ = s;
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              dstIpAddress_ = s;
-              break;
-            }
-            case 24: {
-
-              dscp_ = input.readUInt32();
-              break;
-            }
-            case 32: {
-
-              protocol_ = input.readUInt32();
-              break;
-            }
-            case 40: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (connectionUuid_ != null) {
+                subBuilder = connectionUuid_.toBuilder();
+              }
+              connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(connectionUuid_);
+                connectionUuid_ = subBuilder.buildPartial();
+              }
 
-              ttl_ = input.readUInt32();
               break;
             }
             default: {
@@ -46441,124 +37379,41 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
+      return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
-    }
-
-    public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
-    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;
-    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;
-      }
+              context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
     }
 
-    public static final int DSCP_FIELD_NUMBER = 3;
-    private int dscp_;
+    public static final int CONNECTION_UUID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid connectionUuid_;
     /**
-     * <code>uint32 dscp = 3;</code>
-     * @return The dscp.
+     * <code>.context.Uuid connection_uuid = 1;</code>
+     * @return Whether the connectionUuid field is set.
      */
     @java.lang.Override
-    public int getDscp() {
-      return dscp_;
+    public boolean hasConnectionUuid() {
+      return connectionUuid_ != null;
     }
-
-    public static final int PROTOCOL_FIELD_NUMBER = 4;
-    private int protocol_;
     /**
-     * <code>uint32 protocol = 4;</code>
-     * @return The protocol.
+     * <code>.context.Uuid connection_uuid = 1;</code>
+     * @return The connectionUuid.
      */
     @java.lang.Override
-    public int getProtocol() {
-      return protocol_;
+    public context.ContextOuterClass.Uuid getConnectionUuid() {
+      return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
     }
-
-    public static final int TTL_FIELD_NUMBER = 5;
-    private int ttl_;
     /**
-     * <code>uint32 ttl = 5;</code>
-     * @return The ttl.
+     * <code>.context.Uuid connection_uuid = 1;</code>
      */
     @java.lang.Override
-    public int getTtl() {
-      return ttl_;
+    public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
+      return getConnectionUuid();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -46575,20 +37430,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!getSrcIpAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
-      }
-      if (!getDstIpAddressBytes().isEmpty()) {
-        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_);
+      if (connectionUuid_ != null) {
+        output.writeMessage(1, getConnectionUuid());
       }
       unknownFields.writeTo(output);
     }
@@ -46599,23 +37442,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (!getSrcIpAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
-      }
-      if (!getDstIpAddressBytes().isEmpty()) {
-        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) {
+      if (connectionUuid_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(5, ttl_);
+          .computeMessageSize(1, getConnectionUuid());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -46627,21 +37456,16 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L3)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionId)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionSettings_L3 other = (context.ContextOuterClass.ConnectionSettings_L3) obj;
+      context.ContextOuterClass.ConnectionId other = (context.ContextOuterClass.ConnectionId) 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 (hasConnectionUuid() != other.hasConnectionUuid()) return false;
+      if (hasConnectionUuid()) {
+        if (!getConnectionUuid()
+            .equals(other.getConnectionUuid())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -46653,84 +37477,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (hasConnectionUuid()) {
+        hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
+        hash = (53 * hash) + getConnectionUuid().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
+    public static context.ContextOuterClass.ConnectionId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
+    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.ConnectionSettings_L3 parseFrom(
+    public static context.ContextOuterClass.ConnectionId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
+    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.ConnectionSettings_L3 parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
+    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.ConnectionSettings_L3 parseFrom(java.io.InputStream input)
+    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.ConnectionSettings_L3 parseFrom(
+    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.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input)
+    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.ConnectionSettings_L3 parseDelimitedFrom(
+    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.ConnectionSettings_L3 parseFrom(
+    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.ConnectionSettings_L3 parseFrom(
+    public static context.ContextOuterClass.ConnectionId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -46743,7 +37561,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L3 prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -46759,26 +37577,30 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionSettings_L3}
+     * <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.ConnectionSettings_L3)
-        context.ContextOuterClass.ConnectionSettings_L3OrBuilder {
+        // @@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_ConnectionSettings_L3_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
+                context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -46796,33 +37618,29 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        srcIpAddress_ = "";
-
-        dstIpAddress_ = "";
-
-        dscp_ = 0;
-
-        protocol_ = 0;
-
-        ttl_ = 0;
-
+        if (connectionUuidBuilder_ == null) {
+          connectionUuid_ = null;
+        } else {
+          connectionUuid_ = null;
+          connectionUuidBuilder_ = null;
+        }
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L3 build() {
-        context.ContextOuterClass.ConnectionSettings_L3 result = buildPartial();
+      public context.ContextOuterClass.ConnectionId build() {
+        context.ContextOuterClass.ConnectionId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -46830,13 +37648,13 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
-        result.srcIpAddress_ = srcIpAddress_;
-        result.dstIpAddress_ = dstIpAddress_;
-        result.dscp_ = dscp_;
-        result.protocol_ = protocol_;
-        result.ttl_ = ttl_;
+      public context.ContextOuterClass.ConnectionId buildPartial() {
+        context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
+        if (connectionUuidBuilder_ == null) {
+          result.connectionUuid_ = connectionUuid_;
+        } else {
+          result.connectionUuid_ = connectionUuidBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -46875,32 +37693,18 @@ public final class ContextOuterClass {
       }
       @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);
+        if (other instanceof context.ContextOuterClass.ConnectionId) {
+          return mergeFrom((context.ContextOuterClass.ConnectionId)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_;
-          onChanged();
-        }
-        if (!other.getDstIpAddress().isEmpty()) {
-          dstIpAddress_ = other.dstIpAddress_;
-          onChanged();
-        }
-        if (other.getDscp() != 0) {
-          setDscp(other.getDscp());
-        }
-        if (other.getProtocol() != 0) {
-          setProtocol(other.getProtocol());
-        }
-        if (other.getTtl() != 0) {
-          setTtl(other.getTtl());
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionId other) {
+        if (other == context.ContextOuterClass.ConnectionId.getDefaultInstance()) return this;
+        if (other.hasConnectionUuid()) {
+          mergeConnectionUuid(other.getConnectionUuid());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -46917,11 +37721,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
+        context.ContextOuterClass.ConnectionId parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -46931,249 +37735,123 @@ public final class ContextOuterClass {
         return this;
       }
 
-      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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_ip_address = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcIpAddress() {
-        
-        srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
-        onChanged();
-        return this;
-      }
+      private context.ContextOuterClass.Uuid connectionUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;
       /**
-       * <code>string src_ip_address = 1;</code>
-       * @param value The bytes for srcIpAddress to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid connection_uuid = 1;</code>
+       * @return Whether the connectionUuid field is set.
        */
-      public Builder setSrcIpAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        srcIpAddress_ = value;
-        onChanged();
-        return this;
+      public boolean hasConnectionUuid() {
+        return connectionUuidBuilder_ != null || connectionUuid_ != null;
       }
-
-      private java.lang.Object dstIpAddress_ = "";
       /**
-       * <code>string dst_ip_address = 2;</code>
-       * @return The dstIpAddress.
+       * <code>.context.Uuid connection_uuid = 1;</code>
+       * @return The connectionUuid.
        */
-      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;
+      public context.ContextOuterClass.Uuid getConnectionUuid() {
+        if (connectionUuidBuilder_ == null) {
+          return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
         } else {
-          return (java.lang.String) ref;
+          return connectionUuidBuilder_.getMessage();
         }
       }
       /**
-       * <code>string dst_ip_address = 2;</code>
-       * @return The bytes for dstIpAddress.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      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;
+      public Builder setConnectionUuid(context.ContextOuterClass.Uuid value) {
+        if (connectionUuidBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          connectionUuid_ = value;
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          connectionUuidBuilder_.setMessage(value);
         }
-      }
-      /**
-       * <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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_ip_address = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstIpAddress() {
-        
-        dstIpAddress_ = getDefaultInstance().getDstIpAddress();
-        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;
-        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;
-        onChanged();
+
         return this;
       }
       /**
-       * <code>uint32 dscp = 3;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      public Builder clearDscp() {
-        
-        dscp_ = 0;
-        onChanged();
+      public Builder setConnectionUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (connectionUuidBuilder_ == null) {
+          connectionUuid_ = builderForValue.build();
+          onChanged();
+        } else {
+          connectionUuidBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
-
-      private int protocol_ ;
       /**
-       * <code>uint32 protocol = 4;</code>
-       * @return The protocol.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      @java.lang.Override
-      public int getProtocol() {
-        return protocol_;
+      public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
+        if (connectionUuidBuilder_ == null) {
+          if (connectionUuid_ != null) {
+            connectionUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
+          } else {
+            connectionUuid_ = value;
+          }
+          onChanged();
+        } else {
+          connectionUuidBuilder_.mergeFrom(value);
+        }
+
+        return this;
       }
       /**
-       * <code>uint32 protocol = 4;</code>
-       * @param value The protocol to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      public Builder setProtocol(int value) {
-        
-        protocol_ = value;
-        onChanged();
+      public Builder clearConnectionUuid() {
+        if (connectionUuidBuilder_ == null) {
+          connectionUuid_ = null;
+          onChanged();
+        } else {
+          connectionUuid_ = null;
+          connectionUuidBuilder_ = null;
+        }
+
         return this;
       }
       /**
-       * <code>uint32 protocol = 4;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      public Builder clearProtocol() {
+      public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
         
-        protocol_ = 0;
         onChanged();
-        return this;
-      }
-
-      private int ttl_ ;
-      /**
-       * <code>uint32 ttl = 5;</code>
-       * @return The ttl.
-       */
-      @java.lang.Override
-      public int getTtl() {
-        return ttl_;
+        return getConnectionUuidFieldBuilder().getBuilder();
       }
       /**
-       * <code>uint32 ttl = 5;</code>
-       * @param value The ttl to set.
-       * @return This builder for chaining.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      public Builder setTtl(int value) {
-        
-        ttl_ = value;
-        onChanged();
-        return this;
+      public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
+        if (connectionUuidBuilder_ != null) {
+          return connectionUuidBuilder_.getMessageOrBuilder();
+        } else {
+          return connectionUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+        }
       }
       /**
-       * <code>uint32 ttl = 5;</code>
-       * @return This builder for chaining.
+       * <code>.context.Uuid connection_uuid = 1;</code>
        */
-      public Builder clearTtl() {
-        
-        ttl_ = 0;
-        onChanged();
-        return this;
+      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(
@@ -47188,94 +37866,83 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L3)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionId)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L3)
-    private static final context.ContextOuterClass.ConnectionSettings_L3 DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionId)
+    private static final context.ContextOuterClass.ConnectionId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L3();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionId();
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L3>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L3>() {
+    private static final com.google.protobuf.Parser<ConnectionId>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionId>() {
       @java.lang.Override
-      public ConnectionSettings_L3 parsePartialFrom(
+      public ConnectionId parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L3(input, extensionRegistry);
+        return new ConnectionId(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionSettings_L3> parser() {
+    public static com.google.protobuf.Parser<ConnectionId> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L3> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionId> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionSettings_L4OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L4)
+  public interface ConnectionSettings_L0OrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L0)
       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.
+     * <code>string lsp_symbolic_name = 1;</code>
+     * @return The lspSymbolicName.
      */
-    int getTcpFlags();
-
+    java.lang.String getLspSymbolicName();
     /**
-     * <code>uint32 ttl = 4;</code>
-     * @return The ttl.
+     * <code>string lsp_symbolic_name = 1;</code>
+     * @return The bytes for lspSymbolicName.
      */
-    int getTtl();
+    com.google.protobuf.ByteString
+        getLspSymbolicNameBytes();
   }
   /**
-   * Protobuf type {@code context.ConnectionSettings_L4}
+   * Protobuf type {@code context.ConnectionSettings_L0}
    */
-  public static final class ConnectionSettings_L4 extends
+  public static final class ConnectionSettings_L0 extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L4)
-      ConnectionSettings_L4OrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L0)
+      ConnectionSettings_L0OrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L4.newBuilder() to construct.
-    private ConnectionSettings_L4(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionSettings_L0.newBuilder() to construct.
+    private ConnectionSettings_L0(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionSettings_L4() {
+    private ConnectionSettings_L0() {
+      lspSymbolicName_ = "";
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L4();
+      return new ConnectionSettings_L0();
     }
 
     @java.lang.Override
@@ -47283,7 +37950,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionSettings_L4(
+    private ConnectionSettings_L0(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -47301,24 +37968,10 @@ public final class ContextOuterClass {
             case 0:
               done = true;
               break;
-            case 8: {
-
-              srcPort_ = input.readUInt32();
-              break;
-            }
-            case 16: {
-
-              dstPort_ = input.readUInt32();
-              break;
-            }
-            case 24: {
-
-              tcpFlags_ = input.readUInt32();
-              break;
-            }
-            case 32: {
+            case 10: {
+              java.lang.String s = input.readStringRequireUtf8();
 
-              ttl_ = input.readUInt32();
+              lspSymbolicName_ = s;
               break;
             }
             default: {
@@ -47342,59 +37995,53 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
+      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_L4_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_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_;
-    /**
-     * <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_;
-    /**
-     * <code>uint32 dst_port = 2;</code>
-     * @return The dstPort.
-     */
-    @java.lang.Override
-    public int getDstPort() {
-      return dstPort_;
+              context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
     }
 
-    public static final int TCP_FLAGS_FIELD_NUMBER = 3;
-    private int tcpFlags_;
+    public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
+    private volatile java.lang.Object lspSymbolicName_;
     /**
-     * <code>uint32 tcp_flags = 3;</code>
-     * @return The tcpFlags.
+     * <code>string lsp_symbolic_name = 1;</code>
+     * @return The lspSymbolicName.
      */
     @java.lang.Override
-    public int getTcpFlags() {
-      return tcpFlags_;
+    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;
+      }
     }
-
-    public static final int TTL_FIELD_NUMBER = 4;
-    private int ttl_;
     /**
-     * <code>uint32 ttl = 4;</code>
-     * @return The ttl.
+     * <code>string lsp_symbolic_name = 1;</code>
+     * @return The bytes for lspSymbolicName.
      */
     @java.lang.Override
-    public int getTtl() {
-      return ttl_;
+    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;
@@ -47411,17 +38058,8 @@ public final class ContextOuterClass {
     @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_);
+      if (!getLspSymbolicNameBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
       }
       unknownFields.writeTo(output);
     }
@@ -47432,21 +38070,8 @@ public final class ContextOuterClass {
       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_);
+      if (!getLspSymbolicNameBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -47458,19 +38083,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L4)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L0)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionSettings_L4 other = (context.ContextOuterClass.ConnectionSettings_L4) obj;
+      context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) 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 (!getLspSymbolicName()
+          .equals(other.getLspSymbolicName())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -47482,82 +38101,76 @@ public final class ContextOuterClass {
       }
       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 = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
+      hash = (53 * hash) + getLspSymbolicName().hashCode();
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
+    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_L4 parseFrom(
+    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_L4 parseFrom(
+    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_L4 parseFrom(
+    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_L4 parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
+    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_L4 parseFrom(java.io.InputStream input)
+    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_L4 parseFrom(
+    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_L4 parseDelimitedFrom(java.io.InputStream input)
+    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_L4 parseDelimitedFrom(
+    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_L4 parseFrom(
+    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_L4 parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -47570,7 +38183,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L4 prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L0 prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -47586,26 +38199,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionSettings_L4}
+     * 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_L4)
-        context.ContextOuterClass.ConnectionSettings_L4OrBuilder {
+        // @@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_L4_descriptor;
+        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_L4_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
+                context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -47623,13 +38236,7 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        srcPort_ = 0;
-
-        dstPort_ = 0;
-
-        tcpFlags_ = 0;
-
-        ttl_ = 0;
+        lspSymbolicName_ = "";
 
         return this;
       }
@@ -47637,17 +38244,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L4 build() {
-        context.ContextOuterClass.ConnectionSettings_L4 result = buildPartial();
+      public context.ContextOuterClass.ConnectionSettings_L0 build() {
+        context.ContextOuterClass.ConnectionSettings_L0 result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -47655,12 +38262,9 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
-        result.srcPort_ = srcPort_;
-        result.dstPort_ = dstPort_;
-        result.tcpFlags_ = tcpFlags_;
-        result.ttl_ = ttl_;
+      public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
+        context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
+        result.lspSymbolicName_ = lspSymbolicName_;
         onBuilt();
         return result;
       }
@@ -47699,27 +38303,19 @@ public final class ContextOuterClass {
       }
       @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);
+        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_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());
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L0 other) {
+        if (other == context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) return this;
+        if (!other.getLspSymbolicName().isEmpty()) {
+          lspSymbolicName_ = other.lspSymbolicName_;
+          onChanged();
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -47736,11 +38332,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
+        context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -47750,126 +38346,78 @@ public final class ContextOuterClass {
         return this;
       }
 
-      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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 src_port = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcPort() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 dst_port = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstPort() {
-        
-        dstPort_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int tcpFlags_ ;
+      private java.lang.Object lspSymbolicName_ = "";
       /**
-       * <code>uint32 tcp_flags = 3;</code>
-       * @return The tcpFlags.
+       * <code>string lsp_symbolic_name = 1;</code>
+       * @return The lspSymbolicName.
        */
-      @java.lang.Override
-      public int getTcpFlags() {
-        return tcpFlags_;
+      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>uint32 tcp_flags = 3;</code>
-       * @param value The tcpFlags to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTcpFlags(int value) {
-        
-        tcpFlags_ = value;
-        onChanged();
-        return this;
+      /**
+       * <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>uint32 tcp_flags = 3;</code>
+       * <code>string lsp_symbolic_name = 1;</code>
+       * @param value The lspSymbolicName to set.
        * @return This builder for chaining.
        */
-      public Builder clearTcpFlags() {
-        
-        tcpFlags_ = 0;
+      public Builder setLspSymbolicName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        lspSymbolicName_ = value;
         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.
+       * <code>string lsp_symbolic_name = 1;</code>
        * @return This builder for chaining.
        */
-      public Builder setTtl(int value) {
+      public Builder clearLspSymbolicName() {
         
-        ttl_ = value;
+        lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
         onChanged();
         return this;
       }
       /**
-       * <code>uint32 ttl = 4;</code>
+       * <code>string lsp_symbolic_name = 1;</code>
+       * @param value The bytes for lspSymbolicName to set.
        * @return This builder for chaining.
        */
-      public Builder clearTtl() {
+      public Builder setLspSymbolicNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
         
-        ttl_ = 0;
+        lspSymbolicName_ = value;
         onChanged();
         return this;
       }
@@ -47886,130 +38434,120 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L4)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L0)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L4)
-    private static final context.ContextOuterClass.ConnectionSettings_L4 DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L0)
+    private static final context.ContextOuterClass.ConnectionSettings_L0 DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L4();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L0();
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L4>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L4>() {
+    private static final com.google.protobuf.Parser<ConnectionSettings_L0>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L0>() {
       @java.lang.Override
-      public ConnectionSettings_L4 parsePartialFrom(
+      public ConnectionSettings_L0 parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L4(input, extensionRegistry);
+        return new ConnectionSettings_L0(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionSettings_L4> parser() {
+    public static com.google.protobuf.Parser<ConnectionSettings_L0> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L4> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionSettings_L0> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionSettingsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings)
+  public interface ConnectionSettings_L2OrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L2)
       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.
+     * <code>string src_mac_address = 1;</code>
+     * @return The srcMacAddress.
      */
-    context.ContextOuterClass.ConnectionSettings_L0 getL0();
+    java.lang.String getSrcMacAddress();
     /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+     * <code>string src_mac_address = 1;</code>
+     * @return The bytes for srcMacAddress.
      */
-    context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder();
+    com.google.protobuf.ByteString
+        getSrcMacAddressBytes();
 
     /**
-     * <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.
+     * <code>string dst_mac_address = 2;</code>
+     * @return The dstMacAddress.
      */
-    context.ContextOuterClass.ConnectionSettings_L2 getL2();
+    java.lang.String getDstMacAddress();
     /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+     * <code>string dst_mac_address = 2;</code>
+     * @return The bytes for dstMacAddress.
      */
-    context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder();
+    com.google.protobuf.ByteString
+        getDstMacAddressBytes();
 
     /**
-     * <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>
+     * <code>uint32 ether_type = 3;</code>
+     * @return The etherType.
      */
-    context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder();
+    int getEtherType();
 
     /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return Whether the l4 field is set.
+     * <code>uint32 vlan_id = 4;</code>
+     * @return The vlanId.
      */
-    boolean hasL4();
+    int getVlanId();
+
     /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return The l4.
+     * <code>uint32 mpls_label = 5;</code>
+     * @return The mplsLabel.
      */
-    context.ContextOuterClass.ConnectionSettings_L4 getL4();
+    int getMplsLabel();
+
     /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+     * <code>uint32 mpls_traffic_class = 6;</code>
+     * @return The mplsTrafficClass.
      */
-    context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder();
+    int getMplsTrafficClass();
   }
   /**
-   * Protobuf type {@code context.ConnectionSettings}
+   * Protobuf type {@code context.ConnectionSettings_L2}
    */
-  public static final class ConnectionSettings extends
+  public static final class ConnectionSettings_L2 extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings)
-      ConnectionSettingsOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L2)
+      ConnectionSettings_L2OrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings.newBuilder() to construct.
-    private ConnectionSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionSettings_L2.newBuilder() to construct.
+    private ConnectionSettings_L2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionSettings() {
+    private ConnectionSettings_L2() {
+      srcMacAddress_ = "";
+      dstMacAddress_ = "";
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionSettings();
+      return new ConnectionSettings_L2();
     }
 
     @java.lang.Override
@@ -48017,7 +38555,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionSettings(
+    private ConnectionSettings_L2(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -48036,55 +38574,35 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
-              if (l0_ != null) {
-                subBuilder = l0_.toBuilder();
-              }
-              l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l0_);
-                l0_ = subBuilder.buildPartial();
-              }
+              java.lang.String s = input.readStringRequireUtf8();
 
+              srcMacAddress_ = s;
               break;
             }
             case 18: {
-              context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
-              if (l2_ != null) {
-                subBuilder = l2_.toBuilder();
-              }
-              l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l2_);
-                l2_ = subBuilder.buildPartial();
-              }
+              java.lang.String s = input.readStringRequireUtf8();
 
+              dstMacAddress_ = s;
               break;
             }
-            case 26: {
-              context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
-              if (l3_ != null) {
-                subBuilder = l3_.toBuilder();
-              }
-              l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l3_);
-                l3_ = subBuilder.buildPartial();
-              }
+            case 24: {
+
+              etherType_ = input.readUInt32();
+              break;
+            }
+            case 32: {
 
+              vlanId_ = input.readUInt32();
               break;
             }
-            case 34: {
-              context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
-              if (l4_ != null) {
-                subBuilder = l4_.toBuilder();
-              }
-              l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l4_);
-                l4_ = subBuilder.buildPartial();
-              }
+            case 40: {
 
+              mplsLabel_ = input.readUInt32();
+              break;
+            }
+            case 48: {
+
+              mplsTrafficClass_ = input.readUInt32();
               break;
             }
             default: {
@@ -48108,119 +38626,135 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
+      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_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
+              context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.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;
-    }
+    public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
+    private volatile java.lang.Object srcMacAddress_;
     /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     * @return The l0.
+     * <code>string src_mac_address = 1;</code>
+     * @return The srcMacAddress.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
-      return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+    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>.context.ConnectionSettings_L0 l0 = 1;</code>
+     * <code>string src_mac_address = 1;</code>
+     * @return The bytes for srcMacAddress.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-      return getL0();
+    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 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;
-    }
+    public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
+    private volatile java.lang.Object dstMacAddress_;
     /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     * @return The l2.
+     * <code>string dst_mac_address = 2;</code>
+     * @return The dstMacAddress.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
-      return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+    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>.context.ConnectionSettings_L2 l2 = 2;</code>
+     * <code>string dst_mac_address = 2;</code>
+     * @return The bytes for dstMacAddress.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-      return getL2();
+    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 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_;
-    }
+    public static final int ETHER_TYPE_FIELD_NUMBER = 3;
+    private int etherType_;
     /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+     * <code>uint32 ether_type = 3;</code>
+     * @return The etherType.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-      return getL3();
+    public int getEtherType() {
+      return etherType_;
     }
 
-    public static final int L4_FIELD_NUMBER = 4;
-    private context.ContextOuterClass.ConnectionSettings_L4 l4_;
+    public static final int VLAN_ID_FIELD_NUMBER = 4;
+    private int vlanId_;
     /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return Whether the l4 field is set.
+     * <code>uint32 vlan_id = 4;</code>
+     * @return The vlanId.
      */
     @java.lang.Override
-    public boolean hasL4() {
-      return l4_ != null;
+    public int getVlanId() {
+      return vlanId_;
     }
+
+    public static final int MPLS_LABEL_FIELD_NUMBER = 5;
+    private int mplsLabel_;
     /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return The l4.
+     * <code>uint32 mpls_label = 5;</code>
+     * @return The mplsLabel.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
-      return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+    public int getMplsLabel() {
+      return mplsLabel_;
     }
+
+    public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
+    private int mplsTrafficClass_;
     /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+     * <code>uint32 mpls_traffic_class = 6;</code>
+     * @return The mplsTrafficClass.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-      return getL4();
+    public int getMplsTrafficClass() {
+      return mplsTrafficClass_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -48237,17 +38771,23 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (l0_ != null) {
-        output.writeMessage(1, getL0());
+      if (!getSrcMacAddressBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
       }
-      if (l2_ != null) {
-        output.writeMessage(2, getL2());
+      if (!getDstMacAddressBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
       }
-      if (l3_ != null) {
-        output.writeMessage(3, getL3());
+      if (etherType_ != 0) {
+        output.writeUInt32(3, etherType_);
       }
-      if (l4_ != null) {
-        output.writeMessage(4, getL4());
+      if (vlanId_ != 0) {
+        output.writeUInt32(4, vlanId_);
+      }
+      if (mplsLabel_ != 0) {
+        output.writeUInt32(5, mplsLabel_);
+      }
+      if (mplsTrafficClass_ != 0) {
+        output.writeUInt32(6, mplsTrafficClass_);
       }
       unknownFields.writeTo(output);
     }
@@ -48258,21 +38798,27 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (l0_ != null) {
+      if (!getSrcMacAddressBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
+      }
+      if (!getDstMacAddressBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
+      }
+      if (etherType_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getL0());
+          .computeUInt32Size(3, etherType_);
       }
-      if (l2_ != null) {
+      if (vlanId_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getL2());
+          .computeUInt32Size(4, vlanId_);
       }
-      if (l3_ != null) {
+      if (mplsLabel_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getL3());
+          .computeUInt32Size(5, mplsLabel_);
       }
-      if (l4_ != null) {
+      if (mplsTrafficClass_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getL4());
+          .computeUInt32Size(6, mplsTrafficClass_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -48284,31 +38830,23 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L2)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionSettings other = (context.ContextOuterClass.ConnectionSettings) obj;
+      context.ContextOuterClass.ConnectionSettings_L2 other = (context.ContextOuterClass.ConnectionSettings_L2) 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 (!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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -48320,90 +38858,86 @@ public final class ContextOuterClass {
       }
       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 = (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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
+    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 parseFrom(
+    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 parseFrom(
+    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 parseFrom(
+    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 parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
+    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 parseFrom(java.io.InputStream input)
+    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 parseFrom(
+    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 parseDelimitedFrom(java.io.InputStream input)
+    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 parseDelimitedFrom(
+    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 parseFrom(
+    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 parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -48416,7 +38950,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L2 prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -48432,26 +38966,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionSettings}
+     * 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)
-        context.ContextOuterClass.ConnectionSettingsOrBuilder {
+        // @@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_descriptor;
+        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_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
+                context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -48469,47 +39003,35 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (l0Builder_ == null) {
-          l0_ = null;
-        } else {
-          l0_ = null;
-          l0Builder_ = null;
-        }
-        if (l2Builder_ == null) {
-          l2_ = null;
-        } else {
-          l2_ = null;
-          l2Builder_ = null;
-        }
-        if (l3Builder_ == null) {
-          l3_ = null;
-        } else {
-          l3_ = null;
-          l3Builder_ = null;
-        }
-        if (l4Builder_ == null) {
-          l4_ = null;
-        } else {
-          l4_ = null;
-          l4Builder_ = null;
-        }
+        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_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings build() {
-        context.ContextOuterClass.ConnectionSettings result = buildPartial();
+      public context.ContextOuterClass.ConnectionSettings_L2 build() {
+        context.ContextOuterClass.ConnectionSettings_L2 result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -48517,28 +39039,14 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings buildPartial() {
-        context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
-        if (l0Builder_ == null) {
-          result.l0_ = l0_;
-        } else {
-          result.l0_ = l0Builder_.build();
-        }
-        if (l2Builder_ == null) {
-          result.l2_ = l2_;
-        } else {
-          result.l2_ = l2Builder_.build();
-        }
-        if (l3Builder_ == null) {
-          result.l3_ = l3_;
-        } else {
-          result.l3_ = l3Builder_.build();
-        }
-        if (l4Builder_ == null) {
-          result.l4_ = l4_;
-        } else {
-          result.l4_ = l4Builder_.build();
-        }
+      public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
+        context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
+        result.srcMacAddress_ = srcMacAddress_;
+        result.dstMacAddress_ = dstMacAddress_;
+        result.etherType_ = etherType_;
+        result.vlanId_ = vlanId_;
+        result.mplsLabel_ = mplsLabel_;
+        result.mplsTrafficClass_ = mplsTrafficClass_;
         onBuilt();
         return result;
       }
@@ -48577,27 +39085,35 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionSettings) {
-          return mergeFrom((context.ContextOuterClass.ConnectionSettings)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 other) {
-        if (other == context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) return this;
-        if (other.hasL0()) {
-          mergeL0(other.getL0());
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L2 other) {
+        if (other == context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) return this;
+        if (!other.getSrcMacAddress().isEmpty()) {
+          srcMacAddress_ = other.srcMacAddress_;
+          onChanged();
         }
-        if (other.hasL2()) {
-          mergeL2(other.getL2());
+        if (!other.getDstMacAddress().isEmpty()) {
+          dstMacAddress_ = other.dstMacAddress_;
+          onChanged();
         }
-        if (other.hasL3()) {
-          mergeL3(other.getL3());
+        if (other.getEtherType() != 0) {
+          setEtherType(other.getEtherType());
         }
-        if (other.hasL4()) {
-          mergeL4(other.getL4());
+        if (other.getVlanId() != 0) {
+          setVlanId(other.getVlanId());
+        }
+        if (other.getMplsLabel() != 0) {
+          setMplsLabel(other.getMplsLabel());
+        }
+        if (other.getMplsTrafficClass() != 0) {
+          setMplsTrafficClass(other.getMplsTrafficClass());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -48614,11 +39130,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings parsedMessage = null;
+        context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -48628,480 +39144,280 @@ public final class ContextOuterClass {
         return this;
       }
 
-      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 l0Builder_ != null || l0_ != null;
-      }
-      /**
-       * <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();
-        }
-      }
+      private java.lang.Object srcMacAddress_ = "";
       /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * <code>string src_mac_address = 1;</code>
+       * @return The srcMacAddress.
        */
-      public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
-        if (l0Builder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          l0_ = value;
-          onChanged();
+      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 {
-          l0Builder_.setMessage(value);
+          return (java.lang.String) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * <code>string src_mac_address = 1;</code>
+       * @return The bytes for srcMacAddress.
        */
-      public Builder setL0(
-          context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
-        if (l0Builder_ == null) {
-          l0_ = builderForValue.build();
-          onChanged();
+      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 {
-          l0Builder_.setMessage(builderForValue.build());
+          return (com.google.protobuf.ByteString) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * <code>string src_mac_address = 1;</code>
+       * @param value The srcMacAddress to set.
+       * @return This builder for chaining.
        */
-      public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
-        if (l0Builder_ == null) {
-          if (l0_ != null) {
-            l0_ =
-              context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
-          } else {
-            l0_ = value;
-          }
-          onChanged();
-        } else {
-          l0Builder_.mergeFrom(value);
-        }
-
+      public Builder setSrcMacAddress(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        srcMacAddress_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * <code>string src_mac_address = 1;</code>
+       * @return This builder for chaining.
        */
-      public Builder clearL0() {
-        if (l0Builder_ == null) {
-          l0_ = null;
-          onChanged();
-        } else {
-          l0_ = null;
-          l0Builder_ = null;
-        }
-
+      public Builder clearSrcMacAddress() {
+        
+        srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * <code>string src_mac_address = 1;</code>
+       * @param value The bytes for srcMacAddress to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
+      public Builder setSrcMacAddressBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
         
+        srcMacAddress_ = value;
         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 l2Builder_ != null || l2_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          l2Builder_.setMessage(value);
-        }
-
         return this;
       }
+
+      private java.lang.Object dstMacAddress_ = "";
       /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       * <code>string dst_mac_address = 2;</code>
+       * @return The dstMacAddress.
        */
-      public Builder setL2(
-          context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
-        if (l2Builder_ == null) {
-          l2_ = builderForValue.build();
-          onChanged();
+      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 {
-          l2Builder_.setMessage(builderForValue.build());
+          return (java.lang.String) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       * <code>string dst_mac_address = 2;</code>
+       * @return The bytes for dstMacAddress.
        */
-      public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
-        if (l2Builder_ == null) {
-          if (l2_ != null) {
-            l2_ =
-              context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
-          } else {
-            l2_ = value;
-          }
-          onChanged();
+      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 {
-          l2Builder_.mergeFrom(value);
+          return (com.google.protobuf.ByteString) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       * <code>string dst_mac_address = 2;</code>
+       * @param value The dstMacAddress to set.
+       * @return This builder for chaining.
        */
-      public Builder clearL2() {
-        if (l2Builder_ == null) {
-          l2_ = null;
-          onChanged();
-        } else {
-          l2_ = null;
-          l2Builder_ = null;
-        }
-
+      public Builder setDstMacAddress(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        dstMacAddress_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       * <code>string dst_mac_address = 2;</code>
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
+      public Builder clearDstMacAddress() {
         
+        dstMacAddress_ = getDefaultInstance().getDstMacAddress();
         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 l3Builder_ != null || l3_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          l3Builder_.setMessage(value);
-        }
-
         return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+       * <code>string dst_mac_address = 2;</code>
+       * @param value The bytes for dstMacAddress to set.
+       * @return This builder for chaining.
        */
-      public Builder setL3(
-          context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
-        if (l3Builder_ == null) {
-          l3_ = builderForValue.build();
-          onChanged();
-        } else {
-          l3Builder_.setMessage(builderForValue.build());
-        }
-
+      public Builder setDstMacAddressBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        dstMacAddress_ = value;
+        onChanged();
         return this;
       }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
-        if (l3Builder_ == null) {
-          if (l3_ != null) {
-            l3_ =
-              context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
-          } else {
-            l3_ = value;
-          }
-          onChanged();
-        } else {
-          l3Builder_.mergeFrom(value);
-        }
 
-        return this;
-      }
+      private int etherType_ ;
       /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public Builder clearL3() {
-        if (l3Builder_ == null) {
-          l3_ = null;
-          onChanged();
-        } else {
-          l3_ = null;
-          l3Builder_ = null;
-        }
-
-        return this;
+       * <code>uint32 ether_type = 3;</code>
+       * @return The etherType.
+       */
+      @java.lang.Override
+      public int getEtherType() {
+        return etherType_;
       }
       /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+       * <code>uint32 ether_type = 3;</code>
+       * @param value The etherType to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
+      public Builder setEtherType(int value) {
         
+        etherType_ = value;
         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_;
-        }
+        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+       * <code>uint32 ether_type = 3;</code>
+       * @return This builder for chaining.
        */
-      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_;
+      public Builder clearEtherType() {
+        
+        etherType_ = 0;
+        onChanged();
+        return this;
       }
 
-      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_;
+      private int vlanId_ ;
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       * @return Whether the l4 field is set.
+       * <code>uint32 vlan_id = 4;</code>
+       * @return The vlanId.
        */
-      public boolean hasL4() {
-        return l4Builder_ != null || l4_ != null;
+      @java.lang.Override
+      public int getVlanId() {
+        return vlanId_;
       }
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       * @return The l4.
+       * <code>uint32 vlan_id = 4;</code>
+       * @param value The vlanId to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
-        if (l4Builder_ == null) {
-          return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
-        } else {
-          return l4Builder_.getMessage();
-        }
+      public Builder setVlanId(int value) {
+        
+        vlanId_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 vlan_id = 4;</code>
+       * @return This builder for chaining.
        */
-      public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
-        if (l4Builder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          l4_ = value;
-          onChanged();
-        } else {
-          l4Builder_.setMessage(value);
-        }
-
+      public Builder clearVlanId() {
+        
+        vlanId_ = 0;
+        onChanged();
         return this;
       }
+
+      private int mplsLabel_ ;
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 mpls_label = 5;</code>
+       * @return The mplsLabel.
        */
-      public Builder setL4(
-          context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
-        if (l4Builder_ == null) {
-          l4_ = builderForValue.build();
-          onChanged();
-        } else {
-          l4Builder_.setMessage(builderForValue.build());
-        }
-
-        return this;
+      @java.lang.Override
+      public int getMplsLabel() {
+        return mplsLabel_;
       }
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 mpls_label = 5;</code>
+       * @param value The mplsLabel to set.
+       * @return This builder for chaining.
        */
-      public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
-        if (l4Builder_ == null) {
-          if (l4_ != null) {
-            l4_ =
-              context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
-          } else {
-            l4_ = value;
-          }
-          onChanged();
-        } else {
-          l4Builder_.mergeFrom(value);
-        }
-
+      public Builder setMplsLabel(int value) {
+        
+        mplsLabel_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 mpls_label = 5;</code>
+       * @return This builder for chaining.
        */
-      public Builder clearL4() {
-        if (l4Builder_ == null) {
-          l4_ = null;
-          onChanged();
-        } else {
-          l4_ = null;
-          l4Builder_ = null;
-        }
-
+      public Builder clearMplsLabel() {
+        
+        mplsLabel_ = 0;
+        onChanged();
         return this;
       }
+
+      private int mplsTrafficClass_ ;
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 mpls_traffic_class = 6;</code>
+       * @return The mplsTrafficClass.
        */
-      public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
-        
-        onChanged();
-        return getL4FieldBuilder().getBuilder();
+      @java.lang.Override
+      public int getMplsTrafficClass() {
+        return mplsTrafficClass_;
       }
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 mpls_traffic_class = 6;</code>
+       * @param value The mplsTrafficClass to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-        if (l4Builder_ != null) {
-          return l4Builder_.getMessageOrBuilder();
-        } else {
-          return l4_ == null ?
-              context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
-        }
+      public Builder setMplsTrafficClass(int value) {
+        
+        mplsTrafficClass_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * <code>uint32 mpls_traffic_class = 6;</code>
+       * @return This builder for chaining.
        */
-      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_;
+      public Builder clearMplsTrafficClass() {
+        
+        mplsTrafficClass_ = 0;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -49116,165 +39432,114 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L2)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings)
-    private static final context.ContextOuterClass.ConnectionSettings DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L2)
+    private static final context.ContextOuterClass.ConnectionSettings_L2 DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L2();
     }
 
-    public static context.ContextOuterClass.ConnectionSettings getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings>() {
+    private static final com.google.protobuf.Parser<ConnectionSettings_L2>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L2>() {
       @java.lang.Override
-      public ConnectionSettings parsePartialFrom(
+      public ConnectionSettings_L2 parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings(input, extensionRegistry);
+        return new ConnectionSettings_L2(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionSettings> parser() {
+    public static com.google.protobuf.Parser<ConnectionSettings_L2> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionSettings_L2> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Connection)
+  public interface ConnectionSettings_L3OrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L3)
       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.
+     * <code>string src_ip_address = 1;</code>
+     * @return The srcIpAddress.
      */
-    context.ContextOuterClass.ConnectionId getConnectionId();
+    java.lang.String getSrcIpAddress();
     /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
+     * <code>string src_ip_address = 1;</code>
+     * @return The bytes for srcIpAddress.
      */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+    com.google.protobuf.ByteString
+        getSrcIpAddressBytes();
 
     /**
-     * <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.
+     * <code>string dst_ip_address = 2;</code>
+     * @return The dstIpAddress.
      */
-    context.ContextOuterClass.ServiceId getServiceId();
+    java.lang.String getDstIpAddress();
     /**
-     * <code>.context.ServiceId service_id = 2;</code>
+     * <code>string dst_ip_address = 2;</code>
+     * @return The bytes for dstIpAddress.
      */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+    com.google.protobuf.ByteString
+        getDstIpAddressBytes();
 
     /**
-     * <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>
+     * <code>uint32 dscp = 3;</code>
+     * @return The dscp.
      */
-    context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
-        int index);
+    int getDscp();
 
     /**
-     * <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>
+     * <code>uint32 protocol = 4;</code>
+     * @return The protocol.
      */
-    context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
-        int index);
+    int getProtocol();
 
     /**
-     * <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>
+     * <code>uint32 ttl = 5;</code>
+     * @return The ttl.
      */
-    context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder();
+    int getTtl();
   }
   /**
-   * Protobuf type {@code context.Connection}
+   * Protobuf type {@code context.ConnectionSettings_L3}
    */
-  public static final class Connection extends
+  public static final class ConnectionSettings_L3 extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Connection)
-      ConnectionOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L3)
+      ConnectionSettings_L3OrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use Connection.newBuilder() to construct.
-    private Connection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionSettings_L3.newBuilder() to construct.
+    private ConnectionSettings_L3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private Connection() {
-      pathHopsEndpointIds_ = java.util.Collections.emptyList();
-      subServiceIds_ = java.util.Collections.emptyList();
+    private ConnectionSettings_L3() {
+      srcIpAddress_ = "";
+      dstIpAddress_ = "";
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new Connection();
+      return new ConnectionSettings_L3();
     }
 
     @java.lang.Override
@@ -49282,7 +39547,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Connection(
+    private ConnectionSettings_L3(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49290,7 +39555,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -49302,60 +39566,30 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-              if (connectionId_ != null) {
-                subBuilder = connectionId_.toBuilder();
-              }
-              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionId_);
-                connectionId_ = subBuilder.buildPartial();
-              }
+              java.lang.String s = input.readStringRequireUtf8();
 
+              srcIpAddress_ = s;
               break;
             }
             case 18: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
+              java.lang.String s = input.readStringRequireUtf8();
 
+              dstIpAddress_ = s;
               break;
             }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              pathHopsEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+            case 24: {
+
+              dscp_ = input.readUInt32();
               break;
             }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              subServiceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+            case 32: {
+
+              protocol_ = input.readUInt32();
               break;
             }
-            case 42: {
-              context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
-              if (settings_ != null) {
-                subBuilder = settings_.toBuilder();
-              }
-              settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(settings_);
-                settings_ = subBuilder.buildPartial();
-              }
+            case 40: {
 
+              ttl_ = input.readUInt32();
               break;
             }
             default: {
@@ -49373,185 +39607,130 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Connection_descriptor;
+      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_Connection_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_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 getConnectionId();
-    }
-
-    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 getServiceId();
-    }
-
-    public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
-    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);
+              context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
     }
 
-    public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
-    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_;
-    }
+    public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
+    private volatile java.lang.Object srcIpAddress_;
     /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+     * <code>string src_ip_address = 1;</code>
+     * @return The srcIpAddress.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getSubServiceIdsOrBuilderList() {
-      return subServiceIds_;
+    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>repeated .context.ServiceId sub_service_ids = 4;</code>
+     * <code>string src_ip_address = 1;</code>
+     * @return The bytes for srcIpAddress.
      */
     @java.lang.Override
-    public int getSubServiceIdsCount() {
-      return subServiceIds_.size();
+    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;
+    private volatile java.lang.Object dstIpAddress_;
     /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+     * <code>string dst_ip_address = 2;</code>
+     * @return The dstIpAddress.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
-      return subServiceIds_.get(index);
+    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>repeated .context.ServiceId sub_service_ids = 4;</code>
+     * <code>string dst_ip_address = 2;</code>
+     * @return The bytes for dstIpAddress.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
-        int index) {
-      return subServiceIds_.get(index);
+    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 SETTINGS_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.ConnectionSettings settings_;
+    public static final int DSCP_FIELD_NUMBER = 3;
+    private int dscp_;
     /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     * @return Whether the settings field is set.
+     * <code>uint32 dscp = 3;</code>
+     * @return The dscp.
      */
     @java.lang.Override
-    public boolean hasSettings() {
-      return settings_ != null;
+    public int getDscp() {
+      return dscp_;
     }
+
+    public static final int PROTOCOL_FIELD_NUMBER = 4;
+    private int protocol_;
     /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     * @return The settings.
+     * <code>uint32 protocol = 4;</code>
+     * @return The protocol.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings getSettings() {
-      return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+    public int getProtocol() {
+      return protocol_;
     }
+
+    public static final int TTL_FIELD_NUMBER = 5;
+    private int ttl_;
     /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
+     * <code>uint32 ttl = 5;</code>
+     * @return The ttl.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-      return getSettings();
+    public int getTtl() {
+      return ttl_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -49568,20 +39747,20 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (connectionId_ != null) {
-        output.writeMessage(1, getConnectionId());
+      if (!getSrcIpAddressBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
       }
-      if (serviceId_ != null) {
-        output.writeMessage(2, getServiceId());
+      if (!getDstIpAddressBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
       }
-      for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
-        output.writeMessage(3, pathHopsEndpointIds_.get(i));
+      if (dscp_ != 0) {
+        output.writeUInt32(3, dscp_);
       }
-      for (int i = 0; i < subServiceIds_.size(); i++) {
-        output.writeMessage(4, subServiceIds_.get(i));
+      if (protocol_ != 0) {
+        output.writeUInt32(4, protocol_);
       }
-      if (settings_ != null) {
-        output.writeMessage(5, getSettings());
+      if (ttl_ != 0) {
+        output.writeUInt32(5, ttl_);
       }
       unknownFields.writeTo(output);
     }
@@ -49592,25 +39771,23 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (connectionId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getConnectionId());
+      if (!getSrcIpAddressBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
       }
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getServiceId());
+      if (!getDstIpAddressBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
       }
-      for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
+      if (dscp_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, pathHopsEndpointIds_.get(i));
+          .computeUInt32Size(3, dscp_);
       }
-      for (int i = 0; i < subServiceIds_.size(); i++) {
+      if (protocol_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, subServiceIds_.get(i));
+          .computeUInt32Size(4, protocol_);
       }
-      if (settings_ != null) {
+      if (ttl_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getSettings());
+          .computeUInt32Size(5, ttl_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -49622,30 +39799,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Connection)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L3)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.Connection other = (context.ContextOuterClass.Connection) obj;
+      context.ContextOuterClass.ConnectionSettings_L3 other = (context.ContextOuterClass.ConnectionSettings_L3) 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 (!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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -49657,94 +39825,84 @@ public final class ContextOuterClass {
       }
       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 = (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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Connection parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Connection parseFrom(
+    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.Connection parseFrom(
+    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.Connection parseFrom(
+    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.Connection parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.Connection parseFrom(
+    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.Connection parseFrom(java.io.InputStream input)
+    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.Connection parseFrom(
+    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.Connection parseDelimitedFrom(java.io.InputStream input)
+    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.Connection parseDelimitedFrom(
+    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.Connection parseFrom(
+    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.Connection parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -49757,7 +39915,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L3 prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -49773,26 +39931,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Connection}
+     * 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.Connection)
-        context.ContextOuterClass.ConnectionOrBuilder {
+        // @@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_Connection_descriptor;
+        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_Connection_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
+                context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.Connection.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -49805,60 +39963,38 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getPathHopsEndpointIdsFieldBuilder();
-          getSubServiceIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          pathHopsEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          pathHopsEndpointIdsBuilder_.clear();
-        }
-        if (subServiceIdsBuilder_ == null) {
-          subServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          subServiceIdsBuilder_.clear();
-        }
-        if (settingsBuilder_ == null) {
-          settings_ = null;
-        } else {
-          settings_ = null;
-          settingsBuilder_ = null;
-        }
+        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_Connection_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Connection getDefaultInstanceForType() {
-        return context.ContextOuterClass.Connection.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Connection build() {
-        context.ContextOuterClass.Connection result = buildPartial();
+      public context.ContextOuterClass.ConnectionSettings_L3 build() {
+        context.ContextOuterClass.ConnectionSettings_L3 result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -49866,42 +40002,13 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Connection buildPartial() {
-        context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
-        int from_bitField0_ = bitField0_;
-        if (connectionIdBuilder_ == null) {
-          result.connectionId_ = connectionId_;
-        } else {
-          result.connectionId_ = connectionIdBuilder_.build();
-        }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
-        } else {
-          result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
-        }
-        if (subServiceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.subServiceIds_ = subServiceIds_;
-        } else {
-          result.subServiceIds_ = subServiceIdsBuilder_.build();
-        }
-        if (settingsBuilder_ == null) {
-          result.settings_ = settings_;
-        } else {
-          result.settings_ = settingsBuilder_.build();
-        }
+      public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
+        context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
+        result.srcIpAddress_ = srcIpAddress_;
+        result.dstIpAddress_ = dstIpAddress_;
+        result.dscp_ = dscp_;
+        result.protocol_ = protocol_;
+        result.ttl_ = ttl_;
         onBuilt();
         return result;
       }
@@ -49940,76 +40047,32 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Connection) {
-          return mergeFrom((context.ContextOuterClass.Connection)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.Connection other) {
-        if (other == context.ContextOuterClass.Connection.getDefaultInstance()) return this;
-        if (other.hasConnectionId()) {
-          mergeConnectionId(other.getConnectionId());
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L3 other) {
+        if (other == context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) return this;
+        if (!other.getSrcIpAddress().isEmpty()) {
+          srcIpAddress_ = other.srcIpAddress_;
+          onChanged();
         }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
+        if (!other.getDstIpAddress().isEmpty()) {
+          dstIpAddress_ = other.dstIpAddress_;
+          onChanged();
         }
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (!other.pathHopsEndpointIds_.isEmpty()) {
-            if (pathHopsEndpointIds_.isEmpty()) {
-              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensurePathHopsEndpointIdsIsMutable();
-              pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.pathHopsEndpointIds_.isEmpty()) {
-            if (pathHopsEndpointIdsBuilder_.isEmpty()) {
-              pathHopsEndpointIdsBuilder_.dispose();
-              pathHopsEndpointIdsBuilder_ = null;
-              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              pathHopsEndpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getPathHopsEndpointIdsFieldBuilder() : null;
-            } else {
-              pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
-            }
-          }
+        if (other.getDscp() != 0) {
+          setDscp(other.getDscp());
         }
-        if (subServiceIdsBuilder_ == null) {
-          if (!other.subServiceIds_.isEmpty()) {
-            if (subServiceIds_.isEmpty()) {
-              subServiceIds_ = other.subServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureSubServiceIdsIsMutable();
-              subServiceIds_.addAll(other.subServiceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.subServiceIds_.isEmpty()) {
-            if (subServiceIdsBuilder_.isEmpty()) {
-              subServiceIdsBuilder_.dispose();
-              subServiceIdsBuilder_ = null;
-              subServiceIds_ = other.subServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              subServiceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSubServiceIdsFieldBuilder() : null;
-            } else {
-              subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
-            }
-          }
+        if (other.getProtocol() != 0) {
+          setProtocol(other.getProtocol());
         }
-        if (other.hasSettings()) {
-          mergeSettings(other.getSettings());
+        if (other.getTtl() != 0) {
+          setTtl(other.getTtl());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -50026,11 +40089,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.Connection parsedMessage = null;
+        context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -50039,843 +40102,948 @@ public final class ContextOuterClass {
         }
         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_;
+      private java.lang.Object srcIpAddress_ = "";
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       * @return Whether the connectionId field is set.
+       * <code>string src_ip_address = 1;</code>
+       * @return The srcIpAddress.
        */
-      public boolean hasConnectionId() {
-        return connectionIdBuilder_ != null || connectionId_ != null;
+      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>.context.ConnectionId connection_id = 1;</code>
-       * @return The connectionId.
+       * <code>string src_ip_address = 1;</code>
+       * @return The bytes for srcIpAddress.
        */
-      public context.ContextOuterClass.ConnectionId getConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+      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 connectionIdBuilder_.getMessage();
+          return (com.google.protobuf.ByteString) ref;
         }
       }
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>string src_ip_address = 1;</code>
+       * @param value The srcIpAddress to set.
+       * @return This builder for chaining.
        */
-      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          connectionId_ = value;
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(value);
-        }
-
+      public Builder setSrcIpAddress(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        srcIpAddress_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string src_ip_address = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSrcIpAddress() {
+        
+        srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
+        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;
+        onChanged();
         return this;
       }
+
+      private java.lang.Object dstIpAddress_ = "";
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>string dst_ip_address = 2;</code>
+       * @return The dstIpAddress.
        */
-      public Builder setConnectionId(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = builderForValue.build();
-          onChanged();
+      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 {
-          connectionIdBuilder_.setMessage(builderForValue.build());
+          return (java.lang.String) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>string dst_ip_address = 2;</code>
+       * @return The bytes for dstIpAddress.
        */
-      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (connectionId_ != null) {
-            connectionId_ =
-              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
-          } else {
-            connectionId_ = value;
-          }
-          onChanged();
+      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 {
-          connectionIdBuilder_.mergeFrom(value);
+          return (com.google.protobuf.ByteString) ref;
         }
-
-        return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>string dst_ip_address = 2;</code>
+       * @param value The dstIpAddress to set.
+       * @return This builder for chaining.
        */
-      public Builder clearConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-          onChanged();
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-
+      public Builder setDstIpAddress(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        dstIpAddress_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>string dst_ip_address = 2;</code>
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+      public Builder clearDstIpAddress() {
         
+        dstIpAddress_ = getDefaultInstance().getDstIpAddress();
         onChanged();
-        return getConnectionIdFieldBuilder().getBuilder();
+        return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>string dst_ip_address = 2;</code>
+       * @param value The bytes for dstIpAddress to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-        if (connectionIdBuilder_ != null) {
-          return connectionIdBuilder_.getMessageOrBuilder();
-        } else {
-          return connectionId_ == null ?
-              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        }
+      public Builder setDstIpAddressBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        dstIpAddress_ = value;
+        onChanged();
+        return this;
       }
+
+      private int dscp_ ;
       /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
+       * <code>uint32 dscp = 3;</code>
+       * @return The dscp.
        */
-      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 int getDscp() {
+        return dscp_;
       }
-
-      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.
+       * <code>uint32 dscp = 3;</code>
+       * @param value The dscp to set.
+       * @return This builder for chaining.
        */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
+      public Builder setDscp(int value) {
+        
+        dscp_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return The serviceId.
+       * <code>uint32 dscp = 3;</code>
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
+      public Builder clearDscp() {
+        
+        dscp_ = 0;
+        onChanged();
+        return this;
       }
+
+      private int protocol_ ;
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>uint32 protocol = 4;</code>
+       * @return The protocol.
        */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
+      @java.lang.Override
+      public int getProtocol() {
+        return protocol_;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>uint32 protocol = 4;</code>
+       * @param value The protocol to set.
+       * @return This builder for chaining.
        */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
+      public Builder setProtocol(int value) {
+        
+        protocol_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>uint32 protocol = 4;</code>
+       * @return This builder for chaining.
        */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
+      public Builder clearProtocol() {
+        
+        protocol_ = 0;
+        onChanged();
         return this;
       }
+
+      private int ttl_ ;
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>uint32 ttl = 5;</code>
+       * @return The ttl.
        */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
+      @java.lang.Override
+      public int getTtl() {
+        return ttl_;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>uint32 ttl = 5;</code>
+       * @param value The ttl to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+      public Builder setTtl(int value) {
         
+        ttl_ = value;
         onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
+        return this;
       }
       /**
-       * <code>.context.ServiceId service_id = 2;</code>
+       * <code>uint32 ttl = 5;</code>
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
+      public Builder clearTtl() {
+        
+        ttl_ = 0;
+        onChanged();
+        return this;
       }
-      /**
-       * <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);
       }
 
-      private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensurePathHopsEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
       }
 
-      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();
+      // @@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 {
+        return new ConnectionSettings_L3(input, extensionRegistry);
+      }
+    };
+
+    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();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ConnectionSettings_L4(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+
+              srcPort_ = input.readUInt32();
+              break;
+            }
+            case 16: {
+
+              dstPort_ = input.readUInt32();
+              break;
+            }
+            case 24: {
+
+              tcpFlags_ = input.readUInt32();
+              break;
+            }
+            case 32: {
+
+              ttl_ = input.readUInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
         }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    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_;
+    /**
+     * <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_;
+    /**
+     * <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_;
+    /**
+     * <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_;
+    /**
+     * <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_);
       }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public int getPathHopsEndpointIdsCount() {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          return pathHopsEndpointIds_.size();
-        } else {
-          return pathHopsEndpointIdsBuilder_.getCount();
-        }
+      if (tcpFlags_ != 0) {
+        output.writeUInt32(3, tcpFlags_);
       }
-      /**
-       * <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);
-        }
+      if (ttl_ != 0) {
+        output.writeUInt32(4, ttl_);
       }
-      /**
-       * <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;
+      unknownFields.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_);
       }
-      /**
-       * <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;
+      if (dstPort_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(2, dstPort_);
       }
-      /**
-       * <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;
+      if (tcpFlags_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, tcpFlags_);
       }
-      /**
-       * <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;
+      if (ttl_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(4, ttl_);
       }
-      /**
-       * <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;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
       }
-      /**
-       * <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;
+      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L4)) {
+        return super.equals(obj);
       }
-      /**
-       * <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;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
       }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder clearPathHopsEndpointIds() {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          pathHopsEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.clear();
-        }
-        return this;
+      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) + unknownFields.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;
       }
-      /**
-       * <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;
+
+      @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);
       }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getPathHopsEndpointIdsBuilder(
-          int index) {
-        return getPathHopsEndpointIdsFieldBuilder().getBuilder(index);
+
+      // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <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);
-        }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <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_);
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
         }
       }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder() {
-        return getPathHopsEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        srcPort_ = 0;
+
+        dstPort_ = 0;
+
+        tcpFlags_ = 0;
+
+        ttl_ = 0;
+
+        return this;
       }
-      /**
-       * <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());
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
       }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getPathHopsEndpointIdsBuilderList() {
-        return getPathHopsEndpointIdsFieldBuilder().getBuilderList();
+
+      @java.lang.Override
+      public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance();
       }
-      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_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          pathHopsEndpointIds_ = null;
+
+      @java.lang.Override
+      public context.ContextOuterClass.ConnectionSettings_L4 build() {
+        context.ContextOuterClass.ConnectionSettings_L4 result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
         }
-        return pathHopsEndpointIdsBuilder_;
+        return result;
       }
 
-      private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSubServiceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
-          bitField0_ |= 0x00000002;
-         }
+      @java.lang.Override
+      public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
+        context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
+        result.srcPort_ = srcPort_;
+        result.dstPort_ = dstPort_;
+        result.tcpFlags_ = tcpFlags_;
+        result.ttl_ = ttl_;
+        onBuilt();
+        return result;
       }
 
-      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();
-        }
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public int getSubServiceIdsCount() {
-        if (subServiceIdsBuilder_ == null) {
-          return subServiceIds_.size();
-        } else {
-          return subServiceIdsBuilder_.getCount();
-        }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <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);
-        }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <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();
+      @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 {
-          subServiceIdsBuilder_.addMessage(value);
+          super.mergeFrom(other);
+          return this;
         }
-        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);
+
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L4 other) {
+        if (other == context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) return this;
+        if (other.getSrcPort() != 0) {
+          setSrcPort(other.getSrcPort());
         }
-        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());
+        if (other.getDstPort() != 0) {
+          setDstPort(other.getDstPort());
         }
-        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());
+        if (other.getTcpFlags() != 0) {
+          setTcpFlags(other.getTcpFlags());
         }
-        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);
+        if (other.getTtl() != 0) {
+          setTtl(other.getTtl());
         }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
         return this;
       }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder clearSubServiceIds() {
-        if (subServiceIdsBuilder_ == null) {
-          subServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.clear();
-        }
-        return this;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
-      /**
-       * <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);
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
         }
         return this;
       }
+
+      private int srcPort_ ;
       /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       * <code>uint32 src_port = 1;</code>
+       * @return The srcPort.
        */
-      public context.ContextOuterClass.ServiceId.Builder getSubServiceIdsBuilder(
-          int index) {
-        return getSubServiceIdsFieldBuilder().getBuilder(index);
+      @java.lang.Override
+      public int getSrcPort() {
+        return srcPort_;
       }
       /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       * <code>uint32 src_port = 1;</code>
+       * @param value The srcPort to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
-          int index) {
-        if (subServiceIdsBuilder_ == null) {
-          return subServiceIds_.get(index);  } else {
-          return subServiceIdsBuilder_.getMessageOrBuilder(index);
-        }
+      public Builder setSrcPort(int value) {
+        
+        srcPort_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       * <code>uint32 src_port = 1;</code>
+       * @return This builder for chaining.
        */
-      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getSubServiceIdsOrBuilderList() {
-        if (subServiceIdsBuilder_ != null) {
-          return subServiceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(subServiceIds_);
-        }
+      public Builder clearSrcPort() {
+        
+        srcPort_ = 0;
+        onChanged();
+        return this;
       }
+
+      private int dstPort_ ;
       /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       * <code>uint32 dst_port = 2;</code>
+       * @return The dstPort.
        */
-      public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder() {
-        return getSubServiceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ServiceId.getDefaultInstance());
+      @java.lang.Override
+      public int getDstPort() {
+        return dstPort_;
       }
       /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       * <code>uint32 dst_port = 2;</code>
+       * @param value The dstPort to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder(
-          int index) {
-        return getSubServiceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
+      public Builder setDstPort(int value) {
+        
+        dstPort_ = value;
+        onChanged();
+        return this;
       }
       /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       * <code>uint32 dst_port = 2;</code>
+       * @return This builder for chaining.
        */
-      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_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          subServiceIds_ = null;
-        }
-        return subServiceIdsBuilder_;
+      public Builder clearDstPort() {
+        
+        dstPort_ = 0;
+        onChanged();
+        return this;
       }
 
-      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 settingsBuilder_ != null || settings_ != null;
-      }
+      private int tcpFlags_ ;
       /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       * @return The settings.
+       * <code>uint32 tcp_flags = 3;</code>
+       * @return The tcpFlags.
        */
-      public context.ContextOuterClass.ConnectionSettings getSettings() {
-        if (settingsBuilder_ == null) {
-          return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
-        } else {
-          return settingsBuilder_.getMessage();
-        }
+      @java.lang.Override
+      public int getTcpFlags() {
+        return tcpFlags_;
       }
       /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
+       * <code>uint32 tcp_flags = 3;</code>
+       * @param value The tcpFlags to set.
+       * @return This builder for chaining.
        */
-      public Builder setSettings(context.ContextOuterClass.ConnectionSettings value) {
-        if (settingsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          settings_ = value;
-          onChanged();
-        } else {
-          settingsBuilder_.setMessage(value);
-        }
-
+      public Builder setTcpFlags(int value) {
+        
+        tcpFlags_ = value;
+        onChanged();
         return this;
       }
       /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
+       * <code>uint32 tcp_flags = 3;</code>
+       * @return This builder for chaining.
        */
-      public Builder setSettings(
-          context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
-        if (settingsBuilder_ == null) {
-          settings_ = builderForValue.build();
-          onChanged();
-        } else {
-          settingsBuilder_.setMessage(builderForValue.build());
-        }
-
+      public Builder clearTcpFlags() {
+        
+        tcpFlags_ = 0;
+        onChanged();
         return this;
       }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
-        if (settingsBuilder_ == null) {
-          if (settings_ != null) {
-            settings_ =
-              context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
-          } else {
-            settings_ = value;
-          }
-          onChanged();
-        } else {
-          settingsBuilder_.mergeFrom(value);
-        }
 
-        return this;
-      }
+      private int ttl_ ;
       /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
+       * <code>uint32 ttl = 4;</code>
+       * @return The ttl.
        */
-      public Builder clearSettings() {
-        if (settingsBuilder_ == null) {
-          settings_ = null;
-          onChanged();
-        } else {
-          settings_ = null;
-          settingsBuilder_ = null;
-        }
-
-        return this;
+      @java.lang.Override
+      public int getTtl() {
+        return ttl_;
       }
       /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
+       * <code>uint32 ttl = 4;</code>
+       * @param value The ttl to set.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
+      public Builder setTtl(int value) {
         
+        ttl_ = value;
         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_;
-        }
+        return this;
       }
       /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
+       * <code>uint32 ttl = 4;</code>
+       * @return This builder for chaining.
        */
-      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_;
+      public Builder clearTtl() {
+        
+        ttl_ = 0;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -50890,95 +41058,130 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.Connection)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L4)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Connection)
-    private static final context.ContextOuterClass.Connection DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L4)
+    private static final context.ContextOuterClass.ConnectionSettings_L4 DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Connection();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L4();
     }
 
-    public static context.ContextOuterClass.Connection getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<Connection>
-        PARSER = new com.google.protobuf.AbstractParser<Connection>() {
+    private static final com.google.protobuf.Parser<ConnectionSettings_L4>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L4>() {
       @java.lang.Override
-      public Connection parsePartialFrom(
+      public ConnectionSettings_L4 parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Connection(input, extensionRegistry);
+        return new ConnectionSettings_L4(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Connection> parser() {
+    public static com.google.protobuf.Parser<ConnectionSettings_L4> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Connection> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionSettings_L4> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.Connection getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionIdList)
+  public interface ConnectionSettingsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+     * @return Whether the l0 field is set.
      */
-    java.util.List<context.ContextOuterClass.ConnectionId> 
-        getConnectionIdsList();
+    boolean hasL0();
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+     * @return The l0.
      */
-    context.ContextOuterClass.ConnectionId getConnectionIds(int index);
+    context.ContextOuterClass.ConnectionSettings_L0 getL0();
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
      */
-    int getConnectionIdsCount();
+    context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder();
+
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+     * @return Whether the l2 field is set.
      */
-    java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
-        getConnectionIdsOrBuilderList();
+    boolean hasL2();
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+     * @return The l2.
      */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
-        int index);
+    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.ConnectionIdList}
+   * Protobuf type {@code context.ConnectionSettings}
    */
-  public static final class ConnectionIdList extends
+  public static final class ConnectionSettings extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionIdList)
-      ConnectionIdListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionSettings)
+      ConnectionSettingsOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionIdList.newBuilder() to construct.
-    private ConnectionIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionSettings.newBuilder() to construct.
+    private ConnectionSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionIdList() {
-      connectionIds_ = java.util.Collections.emptyList();
+    private ConnectionSettings() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ConnectionIdList();
+      return new ConnectionSettings();
     }
 
     @java.lang.Override
@@ -50986,7 +41189,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionIdList(
+    private ConnectionSettings(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -50994,7 +41197,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -51006,12 +41208,55 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>();
-                mutable_bitField0_ |= 0x00000001;
+              context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
+              if (l0_ != null) {
+                subBuilder = l0_.toBuilder();
+              }
+              l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(l0_);
+                l0_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
+              if (l2_ != null) {
+                subBuilder = l2_.toBuilder();
+              }
+              l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(l2_);
+                l2_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 26: {
+              context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
+              if (l3_ != null) {
+                subBuilder = l3_.toBuilder();
+              }
+              l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(l3_);
+                l3_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 34: {
+              context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
+              if (l4_ != null) {
+                subBuilder = l4_.toBuilder();
+              }
+              l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(l4_);
+                l4_ = subBuilder.buildPartial();
               }
-              connectionIds_.add(
-                  input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
+
               break;
             }
             default: {
@@ -51029,64 +41274,125 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
+      return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
+              context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
     }
 
-    public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
+    public static final int L0_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.ConnectionSettings_L0 l0_;
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+     * @return Whether the l0 field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
-      return connectionIds_;
+    public boolean hasL0() {
+      return l0_ != null;
     }
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+     * @return The l0.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
-        getConnectionIdsOrBuilderList() {
-      return connectionIds_;
+    public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
+      return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
     }
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
      */
     @java.lang.Override
-    public int getConnectionIdsCount() {
-      return connectionIds_.size();
+    public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
+      return getL0();
     }
+
+    public static final int L2_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.ConnectionSettings_L2 l2_;
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+     * @return Whether the l2 field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
-      return connectionIds_.get(index);
+    public boolean hasL2() {
+      return l2_ != null;
     }
     /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+     * @return The l2.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
-        int index) {
-      return connectionIds_.get(index);
+    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 getL2();
+    }
+
+    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 getL3();
+    }
+
+    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 getL4();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -51103,8 +41409,17 @@ public final class ContextOuterClass {
     @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));
+      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());
       }
       unknownFields.writeTo(output);
     }
@@ -51115,9 +41430,21 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < connectionIds_.size(); i++) {
+      if (l0_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, connectionIds_.get(i));
+          .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 += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -51129,13 +41456,31 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionIdList)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
+      context.ContextOuterClass.ConnectionSettings other = (context.ContextOuterClass.ConnectionSettings) obj;
 
-      if (!getConnectionIdsList()
-          .equals(other.getConnectionIdsList())) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -51147,78 +41492,90 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConnectionIdsCount() > 0) {
-        hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionIdsList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
+    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.ConnectionIdList parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
+    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.ConnectionIdList parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
+    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.ConnectionIdList parseFrom(java.io.InputStream input)
+    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.ConnectionIdList parseFrom(
+    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.ConnectionIdList parseDelimitedFrom(java.io.InputStream input)
+    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.ConnectionIdList parseDelimitedFrom(
+    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.ConnectionIdList parseFrom(
+    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.ConnectionIdList parseFrom(
+    public static context.ContextOuterClass.ConnectionSettings parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -51231,7 +41588,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionIdList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -51247,26 +41604,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionIdList}
+     * Protobuf type {@code context.ConnectionSettings}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionIdList)
-        context.ContextOuterClass.ConnectionIdListOrBuilder {
+        // @@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_ConnectionIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
+                context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -51279,17 +41636,34 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getConnectionIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (connectionIdsBuilder_ == null) {
-          connectionIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (l0Builder_ == null) {
+          l0_ = null;
         } else {
-          connectionIdsBuilder_.clear();
+          l0_ = null;
+          l0Builder_ = null;
+        }
+        if (l2Builder_ == null) {
+          l2_ = null;
+        } else {
+          l2_ = null;
+          l2Builder_ = null;
+        }
+        if (l3Builder_ == null) {
+          l3_ = null;
+        } else {
+          l3_ = null;
+          l3Builder_ = null;
+        }
+        if (l4Builder_ == null) {
+          l4_ = null;
+        } else {
+          l4_ = null;
+          l4Builder_ = null;
         }
         return this;
       }
@@ -51297,17 +41671,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionIdList.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionSettings.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionIdList build() {
-        context.ContextOuterClass.ConnectionIdList result = buildPartial();
+      public context.ContextOuterClass.ConnectionSettings build() {
+        context.ContextOuterClass.ConnectionSettings result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -51315,17 +41689,27 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionIdList buildPartial() {
-        context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (connectionIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.connectionIds_ = connectionIds_;
+      public context.ContextOuterClass.ConnectionSettings buildPartial() {
+        context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
+        if (l0Builder_ == null) {
+          result.l0_ = l0_;
         } else {
-          result.connectionIds_ = connectionIdsBuilder_.build();
+          result.l0_ = l0Builder_.build();
+        }
+        if (l2Builder_ == null) {
+          result.l2_ = l2_;
+        } else {
+          result.l2_ = l2Builder_.build();
+        }
+        if (l3Builder_ == null) {
+          result.l3_ = l3_;
+        } else {
+          result.l3_ = l3Builder_.build();
+        }
+        if (l4Builder_ == null) {
+          result.l4_ = l4_;
+        } else {
+          result.l4_ = l4Builder_.build();
         }
         onBuilt();
         return result;
@@ -51365,310 +41749,531 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionIdList) {
-          return mergeFrom((context.ContextOuterClass.ConnectionIdList)other);
+        if (other instanceof context.ContextOuterClass.ConnectionSettings) {
+          return mergeFrom((context.ContextOuterClass.ConnectionSettings)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();
+      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.unknownFields);
+        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 {
+        context.ContextOuterClass.ConnectionSettings parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
+        }
+        return this;
+      }
+
+      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 l0Builder_ != null || l0_ != null;
+      }
+      /**
+       * <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 {
-          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_);
-            }
+          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;
+          onChanged();
+        } else {
+          l0Builder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder setL0(
+          context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
+        if (l0Builder_ == null) {
+          l0_ = builderForValue.build();
+          onChanged();
+        } else {
+          l0Builder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
+        if (l0Builder_ == null) {
+          if (l0_ != null) {
+            l0_ =
+              context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
+          } else {
+            l0_ = value;
+          }
+          onChanged();
+        } else {
+          l0Builder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder clearL0() {
+        if (l0Builder_ == null) {
+          l0_ = null;
+          onChanged();
+        } else {
+          l0_ = null;
+          l0Builder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
+        
+        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 l2Builder_ != null || l2_ != null;
+      }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          l2Builder_.setMessage(value);
         }
-        this.mergeUnknownFields(other.unknownFields);
-        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();
+          onChanged();
+        } else {
+          l2Builder_.setMessage(builderForValue.build());
+        }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+        return this;
       }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+      /**
+       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       */
+      public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
+        if (l2Builder_ == null) {
+          if (l2_ != null) {
+            l2_ =
+              context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
+          } else {
+            l2_ = value;
           }
+          onChanged();
+        } else {
+          l2Builder_.mergeFrom(value);
         }
+
         return this;
       }
-      private int bitField0_;
+      /**
+       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       */
+      public Builder clearL2() {
+        if (l2Builder_ == null) {
+          l2_ = null;
+          onChanged();
+        } else {
+          l2_ = null;
+          l2Builder_ = null;
+        }
 
-      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;
-         }
+        return this;
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdsBuilder_;
-
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
        */
-      public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
-        if (connectionIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(connectionIds_);
+      public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
+        
+        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 connectionIdsBuilder_.getMessageList();
+          return l2_ == null ?
+              context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
         }
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
        */
-      public int getConnectionIdsCount() {
-        if (connectionIdsBuilder_ == null) {
-          return connectionIds_.size();
-        } else {
-          return connectionIdsBuilder_.getCount();
+      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>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+       * @return Whether the l3 field is set.
        */
-      public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
-        if (connectionIdsBuilder_ == null) {
-          return connectionIds_.get(index);
+      public boolean hasL3() {
+        return l3Builder_ != null || l3_ != null;
+      }
+      /**
+       * <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 connectionIdsBuilder_.getMessage(index);
+          return l3Builder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
        */
-      public Builder setConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdsBuilder_ == null) {
+      public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
+        if (l3Builder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureConnectionIdsIsMutable();
-          connectionIds_.set(index, value);
+          l3_ = value;
           onChanged();
         } else {
-          connectionIdsBuilder_.setMessage(index, value);
+          l3Builder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
        */
-      public Builder setConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.set(index, builderForValue.build());
+      public Builder setL3(
+          context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
+        if (l3Builder_ == null) {
+          l3_ = builderForValue.build();
           onChanged();
         } else {
-          connectionIdsBuilder_.setMessage(index, builderForValue.build());
+          l3Builder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
        */
-      public Builder addConnectionIds(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
+        if (l3Builder_ == null) {
+          if (l3_ != null) {
+            l3_ =
+              context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
+          } else {
+            l3_ = value;
           }
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(value);
           onChanged();
         } else {
-          connectionIdsBuilder_.addMessage(value);
+          l3Builder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
        */
-      public Builder addConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(index, value);
+      public Builder clearL3() {
+        if (l3Builder_ == null) {
+          l3_ = null;
           onChanged();
         } else {
-          connectionIdsBuilder_.addMessage(index, value);
+          l3_ = null;
+          l3Builder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
        */
-      public Builder addConnectionIds(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
+        
+        onChanged();
+        return getL3FieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+       */
+      public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
+        if (l3Builder_ != null) {
+          return l3Builder_.getMessageOrBuilder();
         } else {
-          connectionIdsBuilder_.addMessage(builderForValue.build());
+          return l3_ == null ?
+              context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L3 l3 = 3;</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());
+      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 this;
+        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>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+       * @return Whether the l4 field is set.
        */
-      public Builder addAllConnectionIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConnectionId> values) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, connectionIds_);
-          onChanged();
+      public boolean hasL4() {
+        return l4Builder_ != null || l4_ != null;
+      }
+      /**
+       * <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 {
-          connectionIdsBuilder_.addAllMessages(values);
+          return l4Builder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
-      public Builder clearConnectionIds() {
-        if (connectionIdsBuilder_ == null) {
-          connectionIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
+        if (l4Builder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          l4_ = value;
           onChanged();
         } else {
-          connectionIdsBuilder_.clear();
+          l4Builder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
-      public Builder removeConnectionIds(int index) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.remove(index);
+      public Builder setL4(
+          context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
+        if (l4Builder_ == null) {
+          l4_ = builderForValue.build();
           onChanged();
         } else {
-          connectionIdsBuilder_.remove(index);
+          l4Builder_.setMessage(builderForValue.build());
         }
+
         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>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
-          int index) {
-        if (connectionIdsBuilder_ == null) {
-          return connectionIds_.get(index);  } else {
-          return connectionIdsBuilder_.getMessageOrBuilder(index);
+      public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
+        if (l4Builder_ == null) {
+          if (l4_ != null) {
+            l4_ =
+              context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
+          } else {
+            l4_ = value;
+          }
+          onChanged();
+        } else {
+          l4Builder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
-           getConnectionIdsOrBuilderList() {
-        if (connectionIdsBuilder_ != null) {
-          return connectionIdsBuilder_.getMessageOrBuilderList();
+      public Builder clearL4() {
+        if (l4Builder_ == null) {
+          l4_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(connectionIds_);
+          l4_ = null;
+          l4Builder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
-      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder() {
-        return getConnectionIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConnectionId.getDefaultInstance());
+      public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
+        
+        onChanged();
+        return getL4FieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
-      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder(
-          int index) {
-        return getConnectionIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConnectionId.getDefaultInstance());
+      public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
+        if (l4Builder_ != null) {
+          return l4Builder_.getMessageOrBuilder();
+        } else {
+          return l4_ == null ?
+              context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+        }
       }
       /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+       * <code>.context.ConnectionSettings_L4 l4 = 4;</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),
+      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());
-          connectionIds_ = null;
+          l4_ = null;
         }
-        return connectionIdsBuilder_;
+        return l4Builder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -51683,95 +42288,165 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionIdList)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionIdList)
-    private static final context.ContextOuterClass.ConnectionIdList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionSettings)
+    private static final context.ContextOuterClass.ConnectionSettings DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionIdList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings();
     }
 
-    public static context.ContextOuterClass.ConnectionIdList getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionSettings getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionIdList>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionIdList>() {
+    private static final com.google.protobuf.Parser<ConnectionSettings>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings>() {
       @java.lang.Override
-      public ConnectionIdList parsePartialFrom(
+      public ConnectionSettings parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionIdList(input, extensionRegistry);
+        return new ConnectionSettings(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionIdList> parser() {
+    public static com.google.protobuf.Parser<ConnectionSettings> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionIdList> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionSettings> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface ConnectionListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionList)
+  public interface ConnectionOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.Connection)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ConnectionId connection_id = 1;</code>
+     * @return Whether the connectionId field is set.
      */
-    java.util.List<context.ContextOuterClass.Connection> 
-        getConnectionsList();
+    boolean hasConnectionId();
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ConnectionId connection_id = 1;</code>
+     * @return The connectionId.
      */
-    context.ContextOuterClass.Connection getConnections(int index);
+    context.ContextOuterClass.ConnectionId getConnectionId();
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ConnectionId connection_id = 1;</code>
      */
-    int getConnectionsCount();
+    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return Whether the serviceId field is set.
      */
-    java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
-        getConnectionsOrBuilderList();
+    boolean hasServiceId();
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return The serviceId.
      */
-    context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
+    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.ConnectionList}
+   * Protobuf type {@code context.Connection}
    */
-  public static final class ConnectionList extends
+  public static final class Connection extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionList)
-      ConnectionListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Connection)
+      ConnectionOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ConnectionList.newBuilder() to construct.
-    private ConnectionList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Connection.newBuilder() to construct.
+    private Connection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private ConnectionList() {
-      connections_ = java.util.Collections.emptyList();
+    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 ConnectionList();
+      return new Connection();
     }
 
     @java.lang.Override
@@ -51779,7 +42454,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ConnectionList(
+    private Connection(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -51799,12 +42474,60 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
+              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+              if (connectionId_ != null) {
+                subBuilder = connectionId_.toBuilder();
+              }
+              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(connectionId_);
+                connectionId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+              if (serviceId_ != null) {
+                subBuilder = serviceId_.toBuilder();
+              }
+              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(serviceId_);
+                serviceId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 26: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>();
+                pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              connections_.add(
-                  input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
+              pathHopsEndpointIds_.add(
+                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              subServiceIds_.add(
+                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+              break;
+            }
+            case 42: {
+              context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
+              if (settings_ != null) {
+                subBuilder = settings_.toBuilder();
+              }
+              settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(settings_);
+                settings_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -51823,7 +42546,10 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          connections_ = java.util.Collections.unmodifiableList(connections_);
+          pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) != 0)) {
+          subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -51831,55 +42557,173 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
+      return context.ContextOuterClass.internal_static_context_Connection_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
+              context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
     }
 
-    public static final int CONNECTIONS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Connection> connections_;
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.ConnectionId connectionId_;
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ConnectionId connection_id = 1;</code>
+     * @return Whether the connectionId field is set.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
-      return connections_;
+    public boolean hasConnectionId() {
+      return connectionId_ != null;
     }
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ConnectionId connection_id = 1;</code>
+     * @return The connectionId.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
-        getConnectionsOrBuilderList() {
-      return connections_;
+    public context.ContextOuterClass.ConnectionId getConnectionId() {
+      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
     }
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ConnectionId connection_id = 1;</code>
      */
     @java.lang.Override
-    public int getConnectionsCount() {
-      return connections_.size();
+    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+      return getConnectionId();
     }
+
+    public static final int SERVICE_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.ServiceId serviceId_;
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return Whether the serviceId field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.Connection getConnections(int index) {
-      return connections_.get(index);
+    public boolean hasServiceId() {
+      return serviceId_ != null;
     }
     /**
-     * <code>repeated .context.Connection connections = 1;</code>
+     * <code>.context.ServiceId service_id = 2;</code>
+     * @return The serviceId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
+    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 getServiceId();
+    }
+
+    public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
+    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 connections_.get(index);
+      return pathHopsEndpointIds_.get(index);
+    }
+
+    public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
+    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 getSettings();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -51896,8 +42740,20 @@ public final class ContextOuterClass {
     @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));
+      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());
       }
       unknownFields.writeTo(output);
     }
@@ -51908,9 +42764,25 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < connections_.size(); i++) {
+      if (connectionId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, connections_.get(i));
+          .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 += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -51922,13 +42794,30 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionList)) {
+      if (!(obj instanceof context.ContextOuterClass.Connection)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
+      context.ContextOuterClass.Connection other = (context.ContextOuterClass.Connection) obj;
 
-      if (!getConnectionsList()
-          .equals(other.getConnectionsList())) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -51940,78 +42829,94 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConnectionsCount() > 0) {
-        hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionsList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.ConnectionList parseFrom(
+    public static context.ContextOuterClass.Connection parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
+    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.ConnectionList parseFrom(
+    public static context.ContextOuterClass.Connection parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
+    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.ConnectionList parseFrom(byte[] data)
+    public static context.ContextOuterClass.Connection parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
+    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.ConnectionList parseFrom(java.io.InputStream input)
+    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.ConnectionList parseFrom(
+    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.ConnectionList parseDelimitedFrom(java.io.InputStream input)
+    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.ConnectionList parseDelimitedFrom(
+    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.ConnectionList parseFrom(
+    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.ConnectionList parseFrom(
+    public static context.ContextOuterClass.Connection parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -52024,7 +42929,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -52040,26 +42945,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.ConnectionList}
+     * Protobuf type {@code context.Connection}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionList)
-        context.ContextOuterClass.ConnectionListOrBuilder {
+        // @@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_ConnectionList_descriptor;
+        return context.ContextOuterClass.internal_static_context_Connection_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
+                context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
+      // Construct using context.ContextOuterClass.Connection.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -52072,17 +42977,42 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getConnectionsFieldBuilder();
+          getPathHopsEndpointIdsFieldBuilder();
+          getSubServiceIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (connectionsBuilder_ == null) {
-          connections_ = java.util.Collections.emptyList();
+        if (connectionIdBuilder_ == null) {
+          connectionId_ = null;
+        } else {
+          connectionId_ = null;
+          connectionIdBuilder_ = null;
+        }
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
+        } else {
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
+        }
+        if (pathHopsEndpointIdsBuilder_ == null) {
+          pathHopsEndpointIds_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          connectionsBuilder_.clear();
+          pathHopsEndpointIdsBuilder_.clear();
+        }
+        if (subServiceIdsBuilder_ == null) {
+          subServiceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          subServiceIdsBuilder_.clear();
+        }
+        if (settingsBuilder_ == null) {
+          settings_ = null;
+        } else {
+          settings_ = null;
+          settingsBuilder_ = null;
         }
         return this;
       }
@@ -52090,17 +43020,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
+        return context.ContextOuterClass.internal_static_context_Connection_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionList.getDefaultInstance();
+      public context.ContextOuterClass.Connection getDefaultInstanceForType() {
+        return context.ContextOuterClass.Connection.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionList build() {
-        context.ContextOuterClass.ConnectionList result = buildPartial();
+      public context.ContextOuterClass.Connection build() {
+        context.ContextOuterClass.Connection result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -52108,17 +43038,41 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.ConnectionList buildPartial() {
-        context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
+      public context.ContextOuterClass.Connection buildPartial() {
+        context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
         int from_bitField0_ = bitField0_;
-        if (connectionsBuilder_ == null) {
+        if (connectionIdBuilder_ == null) {
+          result.connectionId_ = connectionId_;
+        } else {
+          result.connectionId_ = connectionIdBuilder_.build();
+        }
+        if (serviceIdBuilder_ == null) {
+          result.serviceId_ = serviceId_;
+        } else {
+          result.serviceId_ = serviceIdBuilder_.build();
+        }
+        if (pathHopsEndpointIdsBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
-            connections_ = java.util.Collections.unmodifiableList(connections_);
+            pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
-          result.connections_ = connections_;
+          result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
         } else {
-          result.connections_ = connectionsBuilder_.build();
+          result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
+        }
+        if (subServiceIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) != 0)) {
+            subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.subServiceIds_ = subServiceIds_;
+        } else {
+          result.subServiceIds_ = subServiceIdsBuilder_.build();
+        }
+        if (settingsBuilder_ == null) {
+          result.settings_ = settings_;
+        } else {
+          result.settings_ = settingsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -52158,42 +43112,77 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionList) {
-          return mergeFrom((context.ContextOuterClass.ConnectionList)other);
+        if (other instanceof context.ContextOuterClass.Connection) {
+          return mergeFrom((context.ContextOuterClass.Connection)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_;
+      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_ & ~0x00000001);
             } else {
-              ensureConnectionsIsMutable();
-              connections_.addAll(other.connections_);
+              ensurePathHopsEndpointIdsIsMutable();
+              pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
             }
             onChanged();
           }
         } else {
-          if (!other.connections_.isEmpty()) {
-            if (connectionsBuilder_.isEmpty()) {
-              connectionsBuilder_.dispose();
-              connectionsBuilder_ = null;
-              connections_ = other.connections_;
+          if (!other.pathHopsEndpointIds_.isEmpty()) {
+            if (pathHopsEndpointIdsBuilder_.isEmpty()) {
+              pathHopsEndpointIdsBuilder_.dispose();
+              pathHopsEndpointIdsBuilder_ = null;
+              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              connectionsBuilder_ = 
+              pathHopsEndpointIdsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConnectionsFieldBuilder() : null;
+                   getPathHopsEndpointIdsFieldBuilder() : null;
             } else {
-              connectionsBuilder_.addAllMessages(other.connections_);
+              pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
             }
           }
         }
+        if (subServiceIdsBuilder_ == null) {
+          if (!other.subServiceIds_.isEmpty()) {
+            if (subServiceIds_.isEmpty()) {
+              subServiceIds_ = other.subServiceIds_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureSubServiceIdsIsMutable();
+              subServiceIds_.addAll(other.subServiceIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.subServiceIds_.isEmpty()) {
+            if (subServiceIdsBuilder_.isEmpty()) {
+              subServiceIdsBuilder_.dispose();
+              subServiceIdsBuilder_ = null;
+              subServiceIds_ = other.subServiceIds_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              subServiceIdsBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getSubServiceIdsFieldBuilder() : null;
+            } else {
+              subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
+            }
+          }
+        }
+        if (other.hasSettings()) {
+          mergeSettings(other.getSettings());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -52209,11 +43198,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.ConnectionList parsedMessage = null;
+        context.ContextOuterClass.Connection parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -52224,1068 +43213,841 @@ public final class ContextOuterClass {
       }
       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();
-        }
-      }
+      private context.ContextOuterClass.ConnectionId connectionId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
+       * @return Whether the connectionId field is set.
        */
-      public int getConnectionsCount() {
-        if (connectionsBuilder_ == null) {
-          return connections_.size();
-        } else {
-          return connectionsBuilder_.getCount();
-        }
+      public boolean hasConnectionId() {
+        return connectionIdBuilder_ != null || connectionId_ != null;
       }
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
+       * @return The connectionId.
        */
-      public context.ContextOuterClass.Connection getConnections(int index) {
-        if (connectionsBuilder_ == null) {
-          return connections_.get(index);
+      public context.ContextOuterClass.ConnectionId getConnectionId() {
+        if (connectionIdBuilder_ == null) {
+          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         } else {
-          return connectionsBuilder_.getMessage(index);
+          return connectionIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
        */
-      public Builder setConnections(
-          int index, context.ContextOuterClass.Connection value) {
-        if (connectionsBuilder_ == null) {
+      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
+        if (connectionIdBuilder_ == 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());
+          connectionId_ = value;
           onChanged();
         } else {
-          connectionsBuilder_.setMessage(index, builderForValue.build());
+          connectionIdBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
        */
-      public Builder addConnections(context.ContextOuterClass.Connection value) {
-        if (connectionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionsIsMutable();
-          connections_.add(value);
+      public Builder setConnectionId(
+          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+        if (connectionIdBuilder_ == null) {
+          connectionId_ = builderForValue.build();
           onChanged();
         } else {
-          connectionsBuilder_.addMessage(value);
+          connectionIdBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
        */
-      public Builder addConnections(
-          int index, context.ContextOuterClass.Connection value) {
-        if (connectionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
+        if (connectionIdBuilder_ == null) {
+          if (connectionId_ != null) {
+            connectionId_ =
+              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+          } else {
+            connectionId_ = value;
           }
-          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();
+          connectionIdBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
        */
-      public Builder removeConnections(int index) {
-        if (connectionsBuilder_ == null) {
-          ensureConnectionsIsMutable();
-          connections_.remove(index);
+      public Builder clearConnectionId() {
+        if (connectionIdBuilder_ == null) {
+          connectionId_ = null;
           onChanged();
         } else {
-          connectionsBuilder_.remove(index);
+          connectionId_ = null;
+          connectionIdBuilder_ = null;
         }
+
         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>
+       * <code>.context.ConnectionId connection_id = 1;</code>
        */
-      public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
-          int index) {
-        if (connectionsBuilder_ == null) {
-          return connections_.get(index);  } else {
-          return connectionsBuilder_.getMessageOrBuilder(index);
-        }
+      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+        
+        onChanged();
+        return getConnectionIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.Connection connections = 1;</code>
+       * <code>.context.ConnectionId connection_id = 1;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
-           getConnectionsOrBuilderList() {
-        if (connectionsBuilder_ != null) {
-          return connectionsBuilder_.getMessageOrBuilderList();
+      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+        if (connectionIdBuilder_ != null) {
+          return connectionIdBuilder_.getMessageOrBuilder();
         } else {
-          return java.util.Collections.unmodifiableList(connections_);
+          return connectionId_ == null ?
+              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         }
       }
       /**
-       * <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>
+       * <code>.context.ConnectionId connection_id = 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),
+      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());
-          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 {
-        return new ConnectionList(input, extensionRegistry);
-      }
-    };
-
-    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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-              if (connectionId_ != null) {
-                subBuilder = connectionId_.toBuilder();
-              }
-              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionId_);
-                connectionId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
+          connectionId_ = null;
         }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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 getEvent();
-    }
-
-    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 getConnectionId();
-    }
-
-    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());
+        return connectionIdBuilder_;
       }
-      unknownFields.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());
+      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 serviceIdBuilder_ != null || serviceId_ != null;
       }
-      if (connectionId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getConnectionId());
+      /**
+       * <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();
+        }
       }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(value);
+        }
 
-    @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);
+        return this;
       }
-      context.ContextOuterClass.ConnectionEvent other = (context.ContextOuterClass.ConnectionEvent) obj;
+      /**
+       * <code>.context.ServiceId service_id = 2;</code>
+       */
+      public Builder setServiceId(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(builderForValue.build());
+        }
 
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
+        return this;
       }
-      if (hasConnectionId() != other.hasConnectionId()) return false;
-      if (hasConnectionId()) {
-        if (!getConnectionId()
-            .equals(other.getConnectionId())) return false;
+      /**
+       * <code>.context.ServiceId service_id = 2;</code>
+       */
+      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (serviceId_ != null) {
+            serviceId_ =
+              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+          } else {
+            serviceId_ = value;
+          }
+          onChanged();
+        } else {
+          serviceIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
       }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+      /**
+       * <code>.context.ServiceId service_id = 2;</code>
+       */
+      public Builder clearServiceId() {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
+          onChanged();
+        } else {
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
+        return this;
       }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
+      /**
+       * <code>.context.ServiceId service_id = 2;</code>
+       */
+      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+        
+        onChanged();
+        return getServiceIdFieldBuilder().getBuilder();
       }
-      if (hasConnectionId()) {
-        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionId().hashCode();
+      /**
+       * <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_;
       }
-      hash = (29 * hash) + unknownFields.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);
-    }
+      private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ =
+        java.util.Collections.emptyList();
+      private void ensurePathHopsEndpointIdsIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
+          bitField0_ |= 0x00000001;
+         }
+      }
 
-    @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);
-    }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> pathHopsEndpointIdsBuilder_;
 
-    @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;
+      /**
+       * <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();
+        }
       }
-
-      @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);
+      /**
+       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+       */
+      public int getPathHopsEndpointIdsCount() {
+        if (pathHopsEndpointIdsBuilder_ == null) {
+          return pathHopsEndpointIds_.size();
+        } else {
+          return pathHopsEndpointIdsBuilder_.getCount();
+        }
       }
-
-      // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
+      /**
+       * <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);
+        }
       }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      /**
+       * <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;
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
+      /**
+       * <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;
       }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
+      /**
+       * <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 {
-          event_ = null;
-          eventBuilder_ = null;
+          pathHopsEndpointIdsBuilder_.addMessage(value);
         }
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
+        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 {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
+          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_ & ~0x00000001);
+          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_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          pathHopsEndpointIds_ = null;
         }
-        return this;
+        return pathHopsEndpointIdsBuilder_;
       }
 
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
+      private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ =
+        java.util.Collections.emptyList();
+      private void ensureSubServiceIdsIsMutable() {
+        if (!((bitField0_ & 0x00000002) != 0)) {
+          subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
+          bitField0_ |= 0x00000002;
+         }
       }
 
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionEvent.getDefaultInstance();
-      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> subServiceIdsBuilder_;
 
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionEvent build() {
-        context.ContextOuterClass.ConnectionEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+      /**
+       * <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();
         }
-        return result;
       }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionEvent buildPartial() {
-        context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
+      /**
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       */
+      public int getSubServiceIdsCount() {
+        if (subServiceIdsBuilder_ == null) {
+          return subServiceIds_.size();
         } else {
-          result.event_ = eventBuilder_.build();
+          return subServiceIdsBuilder_.getCount();
         }
-        if (connectionIdBuilder_ == null) {
-          result.connectionId_ = connectionId_;
+      }
+      /**
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+       */
+      public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
+        if (subServiceIdsBuilder_ == null) {
+          return subServiceIds_.get(index);
         } else {
-          result.connectionId_ = connectionIdBuilder_.build();
+          return subServiceIdsBuilder_.getMessage(index);
         }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionEvent) {
-          return mergeFrom((context.ContextOuterClass.ConnectionEvent)other);
+      /**
+       * <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 {
-          super.mergeFrom(other);
-          return this;
+          subServiceIdsBuilder_.setMessage(index, value);
         }
+        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());
+      /**
+       * <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());
         }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        context.ContextOuterClass.ConnectionEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
+      /**
+       * <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;
       }
-
-      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.
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
+      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>.context.Event event = 1;</code>
-       * @return The event.
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+      public Builder addSubServiceIds(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (subServiceIdsBuilder_ == null) {
+          ensureSubServiceIdsIsMutable();
+          subServiceIds_.add(builderForValue.build());
+          onChanged();
         } else {
-          return eventBuilder_.getMessage();
+          subServiceIdsBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
+      public Builder addSubServiceIds(
+          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (subServiceIdsBuilder_ == null) {
+          ensureSubServiceIdsIsMutable();
+          subServiceIds_.add(index, builderForValue.build());
           onChanged();
         } else {
-          eventBuilder_.setMessage(value);
+          subServiceIdsBuilder_.addMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
+      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 {
-          eventBuilder_.setMessage(builderForValue.build());
+          subServiceIdsBuilder_.addAllMessages(values);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
+      public Builder clearSubServiceIds() {
+        if (subServiceIdsBuilder_ == null) {
+          subServiceIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
           onChanged();
         } else {
-          eventBuilder_.mergeFrom(value);
+          subServiceIdsBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
+      public Builder removeSubServiceIds(int index) {
+        if (subServiceIdsBuilder_ == null) {
+          ensureSubServiceIdsIsMutable();
+          subServiceIds_.remove(index);
           onChanged();
         } else {
-          event_ = null;
-          eventBuilder_ = null;
+          subServiceIdsBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
+      public context.ContextOuterClass.ServiceId.Builder getSubServiceIdsBuilder(
+          int index) {
+        return getSubServiceIdsFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
        */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
+      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 event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
+          return java.util.Collections.unmodifiableList(subServiceIds_);
         }
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.ServiceId sub_service_ids = 4;</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(),
+      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_ & 0x00000002) != 0),
                   getParentForChildren(),
                   isClean());
-          event_ = null;
+          subServiceIds_ = null;
         }
-        return eventBuilder_;
+        return subServiceIdsBuilder_;
       }
 
-      private context.ContextOuterClass.ConnectionId connectionId_;
+      private context.ContextOuterClass.ConnectionSettings settings_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
+          context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> settingsBuilder_;
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       * @return Whether the connectionId field is set.
+       * <code>.context.ConnectionSettings settings = 5;</code>
+       * @return Whether the settings field is set.
        */
-      public boolean hasConnectionId() {
-        return connectionIdBuilder_ != null || connectionId_ != null;
+      public boolean hasSettings() {
+        return settingsBuilder_ != null || settings_ != null;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       * @return The connectionId.
+       * <code>.context.ConnectionSettings settings = 5;</code>
+       * @return The settings.
        */
-      public context.ContextOuterClass.ConnectionId getConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+      public context.ContextOuterClass.ConnectionSettings getSettings() {
+        if (settingsBuilder_ == null) {
+          return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
         } else {
-          return connectionIdBuilder_.getMessage();
+          return settingsBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</code>
        */
-      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
+      public Builder setSettings(context.ContextOuterClass.ConnectionSettings value) {
+        if (settingsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          connectionId_ = value;
+          settings_ = value;
           onChanged();
         } else {
-          connectionIdBuilder_.setMessage(value);
+          settingsBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</code>
        */
-      public Builder setConnectionId(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = builderForValue.build();
+      public Builder setSettings(
+          context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
+        if (settingsBuilder_ == null) {
+          settings_ = builderForValue.build();
           onChanged();
         } else {
-          connectionIdBuilder_.setMessage(builderForValue.build());
+          settingsBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</code>
        */
-      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (connectionId_ != null) {
-            connectionId_ =
-              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+      public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
+        if (settingsBuilder_ == null) {
+          if (settings_ != null) {
+            settings_ =
+              context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
           } else {
-            connectionId_ = value;
+            settings_ = value;
           }
           onChanged();
         } else {
-          connectionIdBuilder_.mergeFrom(value);
+          settingsBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</code>
        */
-      public Builder clearConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
+      public Builder clearSettings() {
+        if (settingsBuilder_ == null) {
+          settings_ = null;
           onChanged();
         } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
+          settings_ = null;
+          settingsBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</code>
        */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+      public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
         
         onChanged();
-        return getConnectionIdFieldBuilder().getBuilder();
+        return getSettingsFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</code>
        */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-        if (connectionIdBuilder_ != null) {
-          return connectionIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
+        if (settingsBuilder_ != null) {
+          return settingsBuilder_.getMessageOrBuilder();
         } else {
-          return connectionId_ == null ?
-              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+          return settings_ == null ?
+              context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
         }
       }
       /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
+       * <code>.context.ConnectionSettings settings = 5;</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(),
+          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());
-          connectionId_ = null;
+          settings_ = null;
         }
-        return connectionIdBuilder_;
+        return settingsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -53300,119 +44062,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.ConnectionEvent)
+      // @@protoc_insertion_point(builder_scope:context.Connection)
     }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionEvent)
-    private static final context.ContextOuterClass.ConnectionEvent DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.Connection)
+    private static final context.ContextOuterClass.Connection DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionEvent();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Connection();
     }
 
-    public static context.ContextOuterClass.ConnectionEvent getDefaultInstance() {
+    public static context.ContextOuterClass.Connection getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<ConnectionEvent>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionEvent>() {
+    private static final com.google.protobuf.Parser<Connection>
+        PARSER = new com.google.protobuf.AbstractParser<Connection>() {
       @java.lang.Override
-      public ConnectionEvent parsePartialFrom(
+      public Connection parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionEvent(input, extensionRegistry);
+        return new Connection(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<ConnectionEvent> parser() {
+    public static com.google.protobuf.Parser<Connection> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionEvent> getParserForType() {
+    public com.google.protobuf.Parser<Connection> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
+    public context.ContextOuterClass.Connection getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface EndPointIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointId)
+  public interface ConnectionIdListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionIdList)
       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.
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
-    context.ContextOuterClass.DeviceId getDeviceId();
+    java.util.List<context.ContextOuterClass.ConnectionId> 
+        getConnectionIdsList();
     /**
-     * <code>.context.DeviceId device_id = 2;</code>
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
-
+    context.ContextOuterClass.ConnectionId getConnectionIds(int index);
     /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return Whether the endpointUuid field is set.
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
-    boolean hasEndpointUuid();
+    int getConnectionIdsCount();
     /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return The endpointUuid.
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
-    context.ContextOuterClass.Uuid getEndpointUuid();
+    java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
+        getConnectionIdsOrBuilderList();
     /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
-    context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder();
+    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
+        int index);
   }
   /**
-   * <pre>
-   * ----- Endpoint ------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.EndPointId}
+   * Protobuf type {@code context.ConnectionIdList}
    */
-  public static final class EndPointId extends
+  public static final class ConnectionIdList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointId)
-      EndPointIdOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionIdList)
+      ConnectionIdListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use EndPointId.newBuilder() to construct.
-    private EndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionIdList.newBuilder() to construct.
+    private ConnectionIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private EndPointId() {
+    private ConnectionIdList() {
+      connectionIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new EndPointId();
+      return new ConnectionIdList();
     }
 
     @java.lang.Override
@@ -53420,7 +44158,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private EndPointId(
+    private ConnectionIdList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -53428,6 +44166,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -53439,42 +44178,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
-              }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (endpointUuid_ != null) {
-                subBuilder = endpointUuid_.toBuilder();
-              }
-              endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointUuid_);
-                endpointUuid_ = subBuilder.buildPartial();
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>();
+                mutable_bitField0_ |= 0x00000001;
               }
-
+              connectionIds_.add(
+                  input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -53492,99 +44201,64 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
+      return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionIdList_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 getTopologyId();
+              context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.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;
-    }
+    public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
     /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return The deviceId.
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+    public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
+      return connectionIds_;
     }
     /**
-     * <code>.context.DeviceId device_id = 2;</code>
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
+    public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
+        getConnectionIdsOrBuilderList() {
+      return connectionIds_;
     }
-
-    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.
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
     @java.lang.Override
-    public boolean hasEndpointUuid() {
-      return endpointUuid_ != null;
+    public int getConnectionIdsCount() {
+      return connectionIds_.size();
     }
     /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return The endpointUuid.
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Uuid getEndpointUuid() {
-      return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+    public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
+      return connectionIds_.get(index);
     }
     /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
+     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-      return getEndpointUuid();
+    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
+        int index) {
+      return connectionIds_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -53601,14 +44275,8 @@ public final class ContextOuterClass {
     @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());
+      for (int i = 0; i < connectionIds_.size(); i++) {
+        output.writeMessage(1, connectionIds_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -53619,17 +44287,9 @@ public final class ContextOuterClass {
       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) {
+      for (int i = 0; i < connectionIds_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getEndpointUuid());
+          .computeMessageSize(1, connectionIds_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -53641,26 +44301,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.EndPointId)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionIdList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.EndPointId other = (context.ContextOuterClass.EndPointId) obj;
+      context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) 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 (!getConnectionIdsList()
+          .equals(other.getConnectionIdsList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -53672,86 +44319,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (getConnectionIdsCount() > 0) {
+        hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
+        hash = (53 * hash) + getConnectionIdsList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.EndPointId parseFrom(
+    public static context.ContextOuterClass.ConnectionIdList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointId parseFrom(
+    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.EndPointId parseFrom(
+    public static context.ContextOuterClass.ConnectionIdList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointId parseFrom(
+    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.EndPointId parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointId parseFrom(
+    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.EndPointId parseFrom(java.io.InputStream input)
+    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.EndPointId parseFrom(
+    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.EndPointId parseDelimitedFrom(java.io.InputStream input)
+    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.EndPointId parseDelimitedFrom(
+    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.EndPointId parseFrom(
+    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.EndPointId parseFrom(
+    public static context.ContextOuterClass.ConnectionIdList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -53764,7 +44403,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointId prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionIdList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -53780,30 +44419,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * <pre>
-     * ----- Endpoint ------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.EndPointId}
+     * Protobuf type {@code context.ConnectionIdList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointId)
-        context.ContextOuterClass.EndPointIdOrBuilder {
+        // @@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_EndPointId_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
+                context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.EndPointId.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -53816,28 +44451,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getConnectionIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (endpointUuidBuilder_ == null) {
-          endpointUuid_ = null;
+        if (connectionIdsBuilder_ == null) {
+          connectionIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          endpointUuid_ = null;
-          endpointUuidBuilder_ = null;
+          connectionIdsBuilder_.clear();
         }
         return this;
       }
@@ -53845,17 +44469,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointId.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionIdList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointId build() {
-        context.ContextOuterClass.EndPointId result = buildPartial();
+      public context.ContextOuterClass.ConnectionIdList build() {
+        context.ContextOuterClass.ConnectionIdList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -53863,22 +44487,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointId buildPartial() {
-        context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
-        } else {
-          result.topologyId_ = topologyIdBuilder_.build();
-        }
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (endpointUuidBuilder_ == null) {
-          result.endpointUuid_ = endpointUuid_;
+      public context.ContextOuterClass.ConnectionIdList buildPartial() {
+        context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
+        int from_bitField0_ = bitField0_;
+        if (connectionIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.connectionIds_ = connectionIds_;
         } else {
-          result.endpointUuid_ = endpointUuidBuilder_.build();
+          result.connectionIds_ = connectionIdsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -53918,24 +44537,41 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointId) {
-          return mergeFrom((context.ContextOuterClass.EndPointId)other);
+        if (other instanceof context.ContextOuterClass.ConnectionIdList) {
+          return mergeFrom((context.ContextOuterClass.ConnectionIdList)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());
+      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.unknownFields);
         onChanged();
@@ -53952,11 +44588,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.EndPointId parsedMessage = null;
+        context.ContextOuterClass.ConnectionIdList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -53965,362 +44601,246 @@ public final class ContextOuterClass {
         }
         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 topologyIdBuilder_ != null || topologyId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(value);
-        }
-
-        return this;
+      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;
+         }
       }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
-          } else {
-            topologyId_ = value;
-          }
-          onChanged();
-        } else {
-          topologyIdBuilder_.mergeFrom(value);
-        }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdsBuilder_;
 
-        return this;
-      }
       /**
-       * <code>.context.TopologyId topology_id = 1;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-          onChanged();
+      public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
+        if (connectionIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(connectionIds_);
         } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
+          return connectionIdsBuilder_.getMessageList();
         }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-        
-        onChanged();
-        return getTopologyIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.TopologyId topology_id = 1;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-        if (topologyIdBuilder_ != null) {
-          return topologyIdBuilder_.getMessageOrBuilder();
+      public int getConnectionIdsCount() {
+        if (connectionIdsBuilder_ == null) {
+          return connectionIds_.size();
         } 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 connectionIdsBuilder_.getCount();
         }
-        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 deviceIdBuilder_ != null || deviceId_ != null;
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       * @return The deviceId.
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+      public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
+        if (connectionIdsBuilder_ == null) {
+          return connectionIds_.get(index);
         } else {
-          return deviceIdBuilder_.getMessage();
+          return connectionIdsBuilder_.getMessage(index);
         }
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
+       * <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();
           }
-          deviceId_ = value;
+          ensureConnectionIdsIsMutable();
+          connectionIds_.set(index, value);
           onChanged();
         } else {
-          deviceIdBuilder_.setMessage(value);
+          connectionIdsBuilder_.setMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
+      public Builder setConnectionIds(
+          int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+        if (connectionIdsBuilder_ == null) {
+          ensureConnectionIdsIsMutable();
+          connectionIds_.set(index, builderForValue.build());
           onChanged();
         } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
+          connectionIdsBuilder_.setMessage(index, builderForValue.build());
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
+      public Builder addConnectionIds(context.ContextOuterClass.ConnectionId value) {
+        if (connectionIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
           }
+          ensureConnectionIdsIsMutable();
+          connectionIds_.add(value);
           onChanged();
         } else {
-          deviceIdBuilder_.mergeFrom(value);
+          connectionIdsBuilder_.addMessage(value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
+      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 {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
+          connectionIdsBuilder_.addMessage(index, value);
         }
-
         return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
+      public Builder addConnectionIds(
+          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+        if (connectionIdsBuilder_ == null) {
+          ensureConnectionIdsIsMutable();
+          connectionIds_.add(builderForValue.build());
+          onChanged();
         } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+          connectionIdsBuilder_.addMessage(builderForValue.build());
         }
+        return this;
       }
       /**
-       * <code>.context.DeviceId device_id = 2;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 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;
+      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 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 endpointUuidBuilder_ != null || endpointUuid_ != null;
+        return this;
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       * @return The endpointUuid.
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public context.ContextOuterClass.Uuid getEndpointUuid() {
-        if (endpointUuidBuilder_ == null) {
-          return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+      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 {
-          return endpointUuidBuilder_.getMessage();
+          connectionIdsBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
-        if (endpointUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointUuid_ = value;
+      public Builder clearConnectionIds() {
+        if (connectionIdsBuilder_ == null) {
+          connectionIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          endpointUuidBuilder_.setMessage(value);
+          connectionIdsBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder setEndpointUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (endpointUuidBuilder_ == null) {
-          endpointUuid_ = builderForValue.build();
+      public Builder removeConnectionIds(int index) {
+        if (connectionIdsBuilder_ == null) {
+          ensureConnectionIdsIsMutable();
+          connectionIds_.remove(index);
           onChanged();
         } else {
-          endpointUuidBuilder_.setMessage(builderForValue.build());
+          connectionIdsBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
-        if (endpointUuidBuilder_ == null) {
-          if (endpointUuid_ != null) {
-            endpointUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
-          } else {
-            endpointUuid_ = value;
-          }
-          onChanged();
-        } else {
-          endpointUuidBuilder_.mergeFrom(value);
+      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);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public Builder clearEndpointUuid() {
-        if (endpointUuidBuilder_ == null) {
-          endpointUuid_ = null;
-          onChanged();
+      public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
+           getConnectionIdsOrBuilderList() {
+        if (connectionIdsBuilder_ != null) {
+          return connectionIdsBuilder_.getMessageOrBuilderList();
         } else {
-          endpointUuid_ = null;
-          endpointUuidBuilder_ = null;
+          return java.util.Collections.unmodifiableList(connectionIds_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
-        
-        onChanged();
-        return getEndpointUuidFieldBuilder().getBuilder();
+      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder() {
+        return getConnectionIdsFieldBuilder().addBuilder(
+            context.ContextOuterClass.ConnectionId.getDefaultInstance());
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
        */
-      public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-        if (endpointUuidBuilder_ != null) {
-          return endpointUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
-        }
+      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder(
+          int index) {
+        return getConnectionIdsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.ConnectionId.getDefaultInstance());
       }
       /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * <code>repeated .context.ConnectionId connection_ids = 1;</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(),
+      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());
-          endpointUuid_ = null;
+          connectionIds_ = null;
         }
-        return endpointUuidBuilder_;
+        return connectionIdsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -54335,156 +44855,95 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.EndPointId)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionIdList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointId)
-    private static final context.ContextOuterClass.EndPointId DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionIdList)
+    private static final context.ContextOuterClass.ConnectionIdList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointId();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionIdList();
     }
 
-    public static context.ContextOuterClass.EndPointId getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionIdList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<EndPointId>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointId>() {
+    private static final com.google.protobuf.Parser<ConnectionIdList>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionIdList>() {
       @java.lang.Override
-      public EndPointId parsePartialFrom(
+      public ConnectionIdList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointId(input, extensionRegistry);
+        return new ConnectionIdList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<EndPointId> parser() {
+    public static com.google.protobuf.Parser<ConnectionIdList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<EndPointId> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionIdList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface EndPointOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPoint)
+  public interface ConnectionListOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionList)
       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.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
-    java.util.List<java.lang.Integer>
-    getKpiSampleTypesValueList();
+    java.util.List<context.ContextOuterClass.Connection> 
+        getConnectionsList();
     /**
-     * <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.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
-    int getKpiSampleTypesValue(int index);
-
+    context.ContextOuterClass.Connection getConnections(int index);
     /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return Whether the endpointLocation field is set.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
-    boolean hasEndpointLocation();
+    int getConnectionsCount();
     /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return The endpointLocation.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
-    context.ContextOuterClass.Location getEndpointLocation();
+    java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
+        getConnectionsOrBuilderList();
     /**
-     * <code>.context.Location endpoint_location = 5;</code>
+     * <code>repeated .context.Connection connections = 1;</code>
      */
-    context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder();
+    context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
+        int index);
   }
   /**
-   * Protobuf type {@code context.EndPoint}
+   * Protobuf type {@code context.ConnectionList}
    */
-  public static final class EndPoint extends
+  public static final class ConnectionList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPoint)
-      EndPointOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionList)
+      ConnectionListOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use EndPoint.newBuilder() to construct.
-    private EndPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionList.newBuilder() to construct.
+    private ConnectionList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private EndPoint() {
-      name_ = "";
-      endpointType_ = "";
-      kpiSampleTypes_ = java.util.Collections.emptyList();
+    private ConnectionList() {
+      connections_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new EndPoint();
+      return new ConnectionList();
     }
 
     @java.lang.Override
@@ -54492,7 +44951,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private EndPoint(
+    private ConnectionList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -54512,64 +44971,12 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              endpointType_ = s;
-              break;
-            }
-            case 32: {
-              int rawValue = input.readEnum();
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
+                connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              kpiSampleTypes_.add(rawValue);
-              break;
-            }
-            case 34: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                  kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
-                  mutable_bitField0_ |= 0x00000001;
-                }
-                kpiSampleTypes_.add(rawValue);
-              }
-              input.popLimit(oldLimit);
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.Location.Builder subBuilder = null;
-              if (endpointLocation_ != null) {
-                subBuilder = endpointLocation_.toBuilder();
-              }
-              endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointLocation_);
-                endpointLocation_ = subBuilder.buildPartial();
-              }
-
+              connections_.add(
+                  input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -54585,212 +44992,66 @@ public final class ContextOuterClass {
         throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
-    }
-
-    @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 getEndpointId();
-    }
-
-    public static final int NAME_FIELD_NUMBER = 2;
-    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;
-    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;
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          connections_ = java.util.Collections.unmodifiableList(connections_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
       }
     }
-    /**
-     * <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 com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
     }
 
-    public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
-    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) {
-                @SuppressWarnings("deprecation")
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(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));
+    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;
+    private java.util.List<context.ContextOuterClass.Connection> connections_;
     /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<java.lang.Integer>
-    getKpiSampleTypesValueList() {
-      return kpiSampleTypes_;
+    public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
+      return connections_;
     }
     /**
-     * <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.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
     @java.lang.Override
-    public int getKpiSampleTypesValue(int index) {
-      return kpiSampleTypes_.get(index);
+    public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
+        getConnectionsOrBuilderList() {
+      return connections_;
     }
-    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.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
     @java.lang.Override
-    public boolean hasEndpointLocation() {
-      return endpointLocation_ != null;
+    public int getConnectionsCount() {
+      return connections_.size();
     }
     /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return The endpointLocation.
+     * <code>repeated .context.Connection connections = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Location getEndpointLocation() {
-      return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+    public context.ContextOuterClass.Connection getConnections(int index) {
+      return connections_.get(index);
     }
     /**
-     * <code>.context.Location endpoint_location = 5;</code>
+     * <code>repeated .context.Connection connections = 1;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-      return getEndpointLocation();
+    public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
+        int index) {
+      return connections_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
@@ -54807,25 +45068,8 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      getSerializedSize();
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        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());
+      for (int i = 0; i < connections_.size(); i++) {
+        output.writeMessage(1, connections_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -54836,31 +45080,9 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        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) {
+      for (int i = 0; i < connections_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getEndpointLocation());
+          .computeMessageSize(1, connections_.get(i));
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -54872,26 +45094,13 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.EndPoint)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionList)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.EndPoint other = (context.ContextOuterClass.EndPoint) obj;
+      context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) 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 (!getConnectionsList()
+          .equals(other.getConnectionsList())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -54903,90 +45112,78 @@ public final class ContextOuterClass {
       }
       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 (getConnectionsCount() > 0) {
+        hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getConnectionsList().hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.EndPoint parseFrom(
+    public static context.ContextOuterClass.ConnectionList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPoint parseFrom(
+    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.EndPoint parseFrom(
+    public static context.ContextOuterClass.ConnectionList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPoint parseFrom(
+    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.EndPoint parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPoint parseFrom(
+    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.EndPoint parseFrom(java.io.InputStream input)
+    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.EndPoint parseFrom(
+    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.EndPoint parseDelimitedFrom(java.io.InputStream input)
+    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.EndPoint parseDelimitedFrom(
+    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.EndPoint parseFrom(
+    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.EndPoint parseFrom(
+    public static context.ContextOuterClass.ConnectionList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -54999,7 +45196,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.EndPoint prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -55015,26 +45212,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.EndPoint}
+     * Protobuf type {@code context.ConnectionList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPoint)
-        context.ContextOuterClass.EndPointOrBuilder {
+        // @@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_EndPoint_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
+                context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.EndPoint.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -55047,28 +45244,17 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getConnectionsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        name_ = "";
-
-        endpointType_ = "";
-
-        kpiSampleTypes_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (endpointLocationBuilder_ == null) {
-          endpointLocation_ = null;
+        if (connectionsBuilder_ == null) {
+          connections_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
         } else {
-          endpointLocation_ = null;
-          endpointLocationBuilder_ = null;
+          connectionsBuilder_.clear();
         }
         return this;
       }
@@ -55076,17 +45262,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPoint.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPoint build() {
-        context.ContextOuterClass.EndPoint result = buildPartial();
+      public context.ContextOuterClass.ConnectionList build() {
+        context.ContextOuterClass.ConnectionList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -55094,25 +45280,17 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPoint buildPartial() {
-        context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
+      public context.ContextOuterClass.ConnectionList buildPartial() {
+        context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
         int from_bitField0_ = bitField0_;
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        result.name_ = name_;
-        result.endpointType_ = endpointType_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.kpiSampleTypes_ = kpiSampleTypes_;
-        if (endpointLocationBuilder_ == null) {
-          result.endpointLocation_ = endpointLocation_;
+        if (connectionsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            connections_ = java.util.Collections.unmodifiableList(connections_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.connections_ = connections_;
         } else {
-          result.endpointLocation_ = endpointLocationBuilder_.build();
+          result.connections_ = connectionsBuilder_.build();
         }
         onBuilt();
         return result;
@@ -55124,626 +45302,338 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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_;
-          onChanged();
-        }
-        if (!other.getEndpointType().isEmpty()) {
-          endpointType_ = other.endpointType_;
-          onChanged();
-        }
-        if (!other.kpiSampleTypes_.isEmpty()) {
-          if (kpiSampleTypes_.isEmpty()) {
-            kpiSampleTypes_ = other.kpiSampleTypes_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureKpiSampleTypesIsMutable();
-            kpiSampleTypes_.addAll(other.kpiSampleTypes_);
-          }
-          onChanged();
-        }
-        if (other.hasEndpointLocation()) {
-          mergeEndpointLocation(other.getEndpointLocation());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        context.ContextOuterClass.EndPoint parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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 endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        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;
-        onChanged();
-        return this;
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <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;
-        onChanged();
-        return this;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-
-      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;
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.ConnectionList) {
+          return mergeFrom((context.ContextOuterClass.ConnectionList)other);
         } else {
-          return (java.lang.String) ref;
+          super.mergeFrom(other);
+          return this;
         }
       }
-      /**
-       * <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;
+
+      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 {
-          return (com.google.protobuf.ByteString) ref;
+          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_);
+            }
+          }
         }
-      }
-      /**
-       * <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;
+        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
-      /**
-       * <code>string endpoint_type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEndpointType() {
-        
-        endpointType_ = getDefaultInstance().getEndpointType();
-        onChanged();
-        return this;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
-      /**
-       * <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;
-        onChanged();
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.ConnectionList parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
         return this;
       }
+      private int bitField0_;
 
-      private java.util.List<java.lang.Integer> kpiSampleTypes_ =
+      private java.util.List<context.ContextOuterClass.Connection> connections_ =
         java.util.Collections.emptyList();
-      private void ensureKpiSampleTypesIsMutable() {
+      private void ensureConnectionsIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
+          connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>(connections_);
           bitField0_ |= 0x00000001;
-        }
-      }
-      /**
-       * <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_);
+         }
       }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> connectionsBuilder_;
+
       /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @return The count of kpiSampleTypes.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public int getKpiSampleTypesCount() {
-        return kpiSampleTypes_.size();
+      public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
+        if (connectionsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(connections_);
+        } else {
+          return connectionsBuilder_.getMessageList();
+        }
       }
       /**
-       * <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.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
-        return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
+      public int getConnectionsCount() {
+        if (connectionsBuilder_ == null) {
+          return connections_.size();
+        } else {
+          return connectionsBuilder_.getCount();
+        }
       }
       /**
-       * <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.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder setKpiSampleTypes(
-          int index, kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
+      public context.ContextOuterClass.Connection getConnections(int index) {
+        if (connectionsBuilder_ == null) {
+          return connections_.get(index);
+        } else {
+          return connectionsBuilder_.getMessage(index);
         }
-        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.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder addKpiSampleTypes(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
+      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);
         }
-        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.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      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());
+      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());
         }
-        onChanged();
         return this;
       }
       /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @return This builder for chaining.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder clearKpiSampleTypes() {
-        kpiSampleTypes_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        onChanged();
+      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 .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 of the value to return.
-       * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
-       * @return This builder for chaining.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder setKpiSampleTypesValue(
-          int index, int value) {
-        ensureKpiSampleTypesIsMutable();
-        kpiSampleTypes_.set(index, value);
-        onChanged();
+      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 .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.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder addKpiSampleTypesValue(int value) {
-        ensureKpiSampleTypesIsMutable();
-        kpiSampleTypes_.add(value);
-        onChanged();
+      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 .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.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder addAllKpiSampleTypesValue(
-          java.lang.Iterable<java.lang.Integer> values) {
-        ensureKpiSampleTypesIsMutable();
-        for (int value : values) {
-          kpiSampleTypes_.add(value);
+      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());
         }
-        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 endpointLocationBuilder_ != null || endpointLocation_ != null;
-      }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       * @return The endpointLocation.
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public context.ContextOuterClass.Location getEndpointLocation() {
-        if (endpointLocationBuilder_ == null) {
-          return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+      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 {
-          return endpointLocationBuilder_.getMessage();
+          connectionsBuilder_.addAllMessages(values);
         }
+        return this;
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder setEndpointLocation(context.ContextOuterClass.Location value) {
-        if (endpointLocationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointLocation_ = value;
+      public Builder clearConnections() {
+        if (connectionsBuilder_ == null) {
+          connections_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
         } else {
-          endpointLocationBuilder_.setMessage(value);
+          connectionsBuilder_.clear();
         }
-
         return this;
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder setEndpointLocation(
-          context.ContextOuterClass.Location.Builder builderForValue) {
-        if (endpointLocationBuilder_ == null) {
-          endpointLocation_ = builderForValue.build();
+      public Builder removeConnections(int index) {
+        if (connectionsBuilder_ == null) {
+          ensureConnectionsIsMutable();
+          connections_.remove(index);
           onChanged();
         } else {
-          endpointLocationBuilder_.setMessage(builderForValue.build());
+          connectionsBuilder_.remove(index);
         }
-
         return this;
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
-        if (endpointLocationBuilder_ == null) {
-          if (endpointLocation_ != null) {
-            endpointLocation_ =
-              context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
-          } else {
-            endpointLocation_ = value;
-          }
-          onChanged();
-        } else {
-          endpointLocationBuilder_.mergeFrom(value);
+      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);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public Builder clearEndpointLocation() {
-        if (endpointLocationBuilder_ == null) {
-          endpointLocation_ = null;
-          onChanged();
+      public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
+           getConnectionsOrBuilderList() {
+        if (connectionsBuilder_ != null) {
+          return connectionsBuilder_.getMessageOrBuilderList();
         } else {
-          endpointLocation_ = null;
-          endpointLocationBuilder_ = null;
+          return java.util.Collections.unmodifiableList(connections_);
         }
-
-        return this;
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
-        
-        onChanged();
-        return getEndpointLocationFieldBuilder().getBuilder();
+      public context.ContextOuterClass.Connection.Builder addConnectionsBuilder() {
+        return getConnectionsFieldBuilder().addBuilder(
+            context.ContextOuterClass.Connection.getDefaultInstance());
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</code>
        */
-      public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-        if (endpointLocationBuilder_ != null) {
-          return endpointLocationBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointLocation_ == null ?
-              context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
-        }
+      public context.ContextOuterClass.Connection.Builder addConnectionsBuilder(
+          int index) {
+        return getConnectionsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Connection.getDefaultInstance());
       }
       /**
-       * <code>.context.Location endpoint_location = 5;</code>
+       * <code>repeated .context.Connection connections = 1;</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(),
+      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());
-          endpointLocation_ = null;
+          connections_ = null;
         }
-        return endpointLocationBuilder_;
+        return connectionsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -55758,124 +45648,100 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.EndPoint)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionList)
     }
 
-    // @@protoc_insertion_point(class_scope:context.EndPoint)
-    private static final context.ContextOuterClass.EndPoint DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionList)
+    private static final context.ContextOuterClass.ConnectionList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPoint();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionList();
     }
 
-    public static context.ContextOuterClass.EndPoint getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<EndPoint>
-        PARSER = new com.google.protobuf.AbstractParser<EndPoint>() {
+    private static final com.google.protobuf.Parser<ConnectionList>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionList>() {
       @java.lang.Override
-      public EndPoint parsePartialFrom(
+      public ConnectionList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPoint(input, extensionRegistry);
+        return new ConnectionList(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<EndPoint> parser() {
+    public static com.google.protobuf.Parser<ConnectionList> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<EndPoint> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionList> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface EndPointNameOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointName)
+  public interface ConnectionEventOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.ConnectionEvent)
       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.
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
-    java.lang.String getDeviceName();
+    boolean hasEvent();
     /**
-     * <code>string device_name = 2;</code>
-     * @return The bytes for deviceName.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
-    com.google.protobuf.ByteString
-        getDeviceNameBytes();
-
+    context.ContextOuterClass.Event getEvent();
     /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The endpointName.
+     * <code>.context.Event event = 1;</code>
      */
-    java.lang.String getEndpointName();
+    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
     /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The bytes for endpointName.
+     * <code>.context.ConnectionId connection_id = 2;</code>
+     * @return Whether the connectionId field is set.
      */
-    com.google.protobuf.ByteString
-        getEndpointNameBytes();
-
+    boolean hasConnectionId();
     /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The endpointType.
+     * <code>.context.ConnectionId connection_id = 2;</code>
+     * @return The connectionId.
      */
-    java.lang.String getEndpointType();
+    context.ContextOuterClass.ConnectionId getConnectionId();
     /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The bytes for endpointType.
+     * <code>.context.ConnectionId connection_id = 2;</code>
      */
-    com.google.protobuf.ByteString
-        getEndpointTypeBytes();
+    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
   }
   /**
-   * Protobuf type {@code context.EndPointName}
+   * Protobuf type {@code context.ConnectionEvent}
    */
-  public static final class EndPointName extends
+  public static final class ConnectionEvent extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointName)
-      EndPointNameOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.ConnectionEvent)
+      ConnectionEventOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use EndPointName.newBuilder() to construct.
-    private EndPointName(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use ConnectionEvent.newBuilder() to construct.
+    private ConnectionEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private EndPointName() {
-      deviceName_ = "";
-      endpointName_ = "";
-      endpointType_ = "";
+    private ConnectionEvent() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new EndPointName();
+      return new ConnectionEvent();
     }
 
     @java.lang.Override
@@ -55883,7 +45749,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private EndPointName(
+    private ConnectionEvent(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -55902,34 +45768,29 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
+              context.ContextOuterClass.Event.Builder subBuilder = null;
+              if (event_ != null) {
+                subBuilder = event_.toBuilder();
               }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
+                subBuilder.mergeFrom(event_);
+                event_ = subBuilder.buildPartial();
               }
 
               break;
             }
             case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              deviceName_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              endpointName_ = s;
-              break;
-            }
-            case 34: {
-              java.lang.String s = input.readStringRequireUtf8();
+              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+              if (connectionId_ != null) {
+                subBuilder = connectionId_.toBuilder();
+              }
+              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(connectionId_);
+                connectionId_ = subBuilder.buildPartial();
+              }
 
-              endpointType_ = s;
               break;
             }
             default: {
@@ -55953,155 +45814,67 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
+      return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
+              context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.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_;
-    }
+    public static final int EVENT_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Event event_;
     /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
+     * <code>.context.Event event = 1;</code>
+     * @return Whether the event field is set.
      */
     @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
+    public boolean hasEvent() {
+      return event_ != null;
     }
-
-    public static final int DEVICE_NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object deviceName_;
     /**
-     * <code>string device_name = 2;</code>
-     * @return The deviceName.
+     * <code>.context.Event event = 1;</code>
+     * @return The event.
      */
     @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;
-      }
+    public context.ContextOuterClass.Event getEvent() {
+      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
     /**
-     * <code>string device_name = 2;</code>
-     * @return The bytes for deviceName.
+     * <code>.context.Event event = 1;</code>
      */
     @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 context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+      return getEvent();
     }
 
-    public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
-    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;
-      }
-    }
+    public static final int CONNECTION_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.ConnectionId connectionId_;
     /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The bytes for endpointName.
+     * <code>.context.ConnectionId connection_id = 2;</code>
+     * @return Whether the connectionId field is set.
      */
     @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 boolean hasConnectionId() {
+      return connectionId_ != null;
     }
-
-    public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
-    private volatile java.lang.Object endpointType_;
     /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The endpointType.
+     * <code>.context.ConnectionId connection_id = 2;</code>
+     * @return The connectionId.
      */
     @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;
-      }
+    public context.ContextOuterClass.ConnectionId getConnectionId() {
+      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
     }
     /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The bytes for endpointType.
+     * <code>.context.ConnectionId connection_id = 2;</code>
      */
     @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 context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+      return getConnectionId();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -56118,17 +45891,11 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (!getDeviceNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
-      }
-      if (!getEndpointNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
+      if (event_ != null) {
+        output.writeMessage(1, getEvent());
       }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
+      if (connectionId_ != null) {
+        output.writeMessage(2, getConnectionId());
       }
       unknownFields.writeTo(output);
     }
@@ -56139,18 +45906,13 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      if (endpointId_ != null) {
+      if (event_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (!getDeviceNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
-      }
-      if (!getEndpointNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
+          .computeMessageSize(1, getEvent());
       }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
+      if (connectionId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getConnectionId());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -56162,22 +45924,21 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.EndPointName)) {
+      if (!(obj instanceof context.ContextOuterClass.ConnectionEvent)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.EndPointName other = (context.ContextOuterClass.EndPointName) obj;
+      context.ContextOuterClass.ConnectionEvent other = (context.ContextOuterClass.ConnectionEvent) obj;
 
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
+      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 (!getDeviceName()
-          .equals(other.getDeviceName())) return false;
-      if (!getEndpointName()
-          .equals(other.getEndpointName())) return false;
-      if (!getEndpointType()
-          .equals(other.getEndpointType())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -56189,84 +45950,82 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().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 = (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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.EndPointName parseFrom(
+    public static context.ContextOuterClass.ConnectionEvent parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointName parseFrom(
+    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.EndPointName parseFrom(
+    public static context.ContextOuterClass.ConnectionEvent parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointName parseFrom(
+    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.EndPointName parseFrom(byte[] data)
+    public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointName parseFrom(
+    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.EndPointName parseFrom(java.io.InputStream input)
+    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.EndPointName parseFrom(
+    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.EndPointName parseDelimitedFrom(java.io.InputStream input)
+    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.EndPointName parseDelimitedFrom(
+    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.EndPointName parseFrom(
+    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.EndPointName parseFrom(
+    public static context.ContextOuterClass.ConnectionEvent parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -56279,7 +46038,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointName prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.ConnectionEvent prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -56295,26 +46054,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.EndPointName}
+     * Protobuf type {@code context.ConnectionEvent}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointName)
-        context.ContextOuterClass.EndPointNameOrBuilder {
+        // @@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_EndPointName_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
+                context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.EndPointName.newBuilder()
+      // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -56332,35 +46091,35 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
+        if (eventBuilder_ == null) {
+          event_ = null;
         } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
+          event_ = null;
+          eventBuilder_ = null;
+        }
+        if (connectionIdBuilder_ == null) {
+          connectionId_ = null;
+        } else {
+          connectionId_ = null;
+          connectionIdBuilder_ = null;
         }
-        deviceName_ = "";
-
-        endpointName_ = "";
-
-        endpointType_ = "";
-
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
+        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointName.getDefaultInstance();
+      public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
+        return context.ContextOuterClass.ConnectionEvent.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointName build() {
-        context.ContextOuterClass.EndPointName result = buildPartial();
+      public context.ContextOuterClass.ConnectionEvent build() {
+        context.ContextOuterClass.ConnectionEvent result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -56368,16 +46127,18 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointName buildPartial() {
-        context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
+      public context.ContextOuterClass.ConnectionEvent buildPartial() {
+        context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
+        if (eventBuilder_ == null) {
+          result.event_ = event_;
         } else {
-          result.endpointId_ = endpointIdBuilder_.build();
+          result.event_ = eventBuilder_.build();
+        }
+        if (connectionIdBuilder_ == null) {
+          result.connectionId_ = connectionId_;
+        } else {
+          result.connectionId_ = connectionIdBuilder_.build();
         }
-        result.deviceName_ = deviceName_;
-        result.endpointName_ = endpointName_;
-        result.endpointType_ = endpointType_;
         onBuilt();
         return result;
       }
@@ -56416,30 +46177,21 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointName) {
-          return mergeFrom((context.ContextOuterClass.EndPointName)other);
+        if (other instanceof context.ContextOuterClass.ConnectionEvent) {
+          return mergeFrom((context.ContextOuterClass.ConnectionEvent)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_;
-          onChanged();
-        }
-        if (!other.getEndpointName().isEmpty()) {
-          endpointName_ = other.endpointName_;
-          onChanged();
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionEvent other) {
+        if (other == context.ContextOuterClass.ConnectionEvent.getDefaultInstance()) return this;
+        if (other.hasEvent()) {
+          mergeEvent(other.getEvent());
         }
-        if (!other.getEndpointType().isEmpty()) {
-          endpointType_ = other.endpointType_;
-          onChanged();
+        if (other.hasConnectionId()) {
+          mergeConnectionId(other.getConnectionId());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -56456,11 +46208,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.EndPointName parsedMessage = null;
+        context.ContextOuterClass.ConnectionEvent parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -56470,351 +46222,242 @@ public final class ContextOuterClass {
         return this;
       }
 
-      private context.ContextOuterClass.EndPointId endpointId_;
+      private context.ContextOuterClass.Event event_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
+          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return Whether the endpointId field is set.
+       * <code>.context.Event event = 1;</code>
+       * @return Whether the event field is set.
        */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
+      public boolean hasEvent() {
+        return eventBuilder_ != null || event_ != null;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return The endpointId.
+       * <code>.context.Event event = 1;</code>
+       * @return The event.
        */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+      public context.ContextOuterClass.Event getEvent() {
+        if (eventBuilder_ == null) {
+          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         } else {
-          return endpointIdBuilder_.getMessage();
+          return eventBuilder_.getMessage();
         }
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
+      public Builder setEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          endpointId_ = value;
+          event_ = value;
           onChanged();
         } else {
-          endpointIdBuilder_.setMessage(value);
+          eventBuilder_.setMessage(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
+      public Builder setEvent(
+          context.ContextOuterClass.Event.Builder builderForValue) {
+        if (eventBuilder_ == null) {
+          event_ = builderForValue.build();
           onChanged();
         } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
+          eventBuilder_.setMessage(builderForValue.build());
         }
 
         return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+      public Builder mergeEvent(context.ContextOuterClass.Event value) {
+        if (eventBuilder_ == null) {
+          if (event_ != null) {
+            event_ =
+              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
           } else {
-            endpointId_ = value;
+            event_ = value;
           }
           onChanged();
         } else {
-          endpointIdBuilder_.mergeFrom(value);
+          eventBuilder_.mergeFrom(value);
         }
 
         return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
+      public Builder clearEvent() {
+        if (eventBuilder_ == null) {
+          event_ = null;
           onChanged();
         } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
+          event_ = null;
+          eventBuilder_ = null;
         }
 
         return this;
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+      public context.ContextOuterClass.Event.Builder getEventBuilder() {
         
         onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
+        return getEventFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 1;</code>
        */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
+      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+        if (eventBuilder_ != null) {
+          return eventBuilder_.getMessageOrBuilder();
         } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+          return event_ == null ?
+              context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
       }
       /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * <code>.context.Event event = 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(),
+          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());
-          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;
+          event_ = null;
         }
-      }
-      /**
-       * <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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string device_name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeviceName() {
-        
-        deviceName_ = getDefaultInstance().getDeviceName();
-        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;
-        onChanged();
-        return this;
+        return eventBuilder_;
       }
 
-      private java.lang.Object endpointName_ = "";
+      private context.ContextOuterClass.ConnectionId connectionId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
       /**
-       * <code>string endpoint_name = 3;</code>
-       * @return The endpointName.
+       * <code>.context.ConnectionId connection_id = 2;</code>
+       * @return Whether the connectionId field is set.
        */
-      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;
-        }
+      public boolean hasConnectionId() {
+        return connectionIdBuilder_ != null || connectionId_ != null;
       }
       /**
-       * <code>string endpoint_name = 3;</code>
-       * @return The bytes for endpointName.
+       * <code>.context.ConnectionId connection_id = 2;</code>
+       * @return The connectionId.
        */
-      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;
+      public context.ContextOuterClass.ConnectionId getConnectionId() {
+        if (connectionIdBuilder_ == null) {
+          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         } 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;
-        onChanged();
-        return this;
+          return connectionIdBuilder_.getMessage();
+        }
       }
       /**
-       * <code>string endpoint_name = 3;</code>
-       * @return This builder for chaining.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      public Builder clearEndpointName() {
-        
-        endpointName_ = getDefaultInstance().getEndpointName();
-        onChanged();
+      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
+        if (connectionIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          connectionId_ = value;
+          onChanged();
+        } else {
+          connectionIdBuilder_.setMessage(value);
+        }
+
         return this;
       }
       /**
-       * <code>string endpoint_name = 3;</code>
-       * @param value The bytes for endpointName to set.
-       * @return This builder for chaining.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      public Builder setEndpointNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endpointName_ = value;
-        onChanged();
+      public Builder setConnectionId(
+          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+        if (connectionIdBuilder_ == null) {
+          connectionId_ = builderForValue.build();
+          onChanged();
+        } else {
+          connectionIdBuilder_.setMessage(builderForValue.build());
+        }
+
         return this;
       }
-
-      private java.lang.Object endpointType_ = "";
       /**
-       * <code>string endpoint_type = 4;</code>
-       * @return The endpointType.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      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;
+      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
+        if (connectionIdBuilder_ == null) {
+          if (connectionId_ != null) {
+            connectionId_ =
+              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+          } else {
+            connectionId_ = value;
+          }
+          onChanged();
         } else {
-          return (java.lang.String) ref;
+          connectionIdBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>string endpoint_type = 4;</code>
-       * @return The bytes for endpointType.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      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;
+      public Builder clearConnectionId() {
+        if (connectionIdBuilder_ == null) {
+          connectionId_ = null;
+          onChanged();
         } else {
-          return (com.google.protobuf.ByteString) ref;
+          connectionId_ = null;
+          connectionIdBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>string endpoint_type = 4;</code>
-       * @param value The endpointType to set.
-       * @return This builder for chaining.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      public Builder setEndpointType(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        endpointType_ = value;
+      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+        
         onChanged();
-        return this;
+        return getConnectionIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>string endpoint_type = 4;</code>
-       * @return This builder for chaining.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      public Builder clearEndpointType() {
-        
-        endpointType_ = getDefaultInstance().getEndpointType();
-        onChanged();
-        return this;
+      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+        if (connectionIdBuilder_ != null) {
+          return connectionIdBuilder_.getMessageOrBuilder();
+        } else {
+          return connectionId_ == null ?
+              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
       }
       /**
-       * <code>string endpoint_type = 4;</code>
-       * @param value The bytes for endpointType to set.
-       * @return This builder for chaining.
+       * <code>.context.ConnectionId connection_id = 2;</code>
        */
-      public Builder setEndpointTypeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endpointType_ = value;
-        onChanged();
-        return this;
+      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(
@@ -56829,95 +46472,119 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.EndPointName)
+      // @@protoc_insertion_point(builder_scope:context.ConnectionEvent)
     }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointName)
-    private static final context.ContextOuterClass.EndPointName DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.ConnectionEvent)
+    private static final context.ContextOuterClass.ConnectionEvent DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointName();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionEvent();
     }
 
-    public static context.ContextOuterClass.EndPointName getDefaultInstance() {
+    public static context.ContextOuterClass.ConnectionEvent getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<EndPointName>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointName>() {
+    private static final com.google.protobuf.Parser<ConnectionEvent>
+        PARSER = new com.google.protobuf.AbstractParser<ConnectionEvent>() {
       @java.lang.Override
-      public EndPointName parsePartialFrom(
+      public ConnectionEvent parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointName(input, extensionRegistry);
+        return new ConnectionEvent(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<EndPointName> parser() {
+    public static com.google.protobuf.Parser<ConnectionEvent> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<EndPointName> getParserForType() {
+    public com.google.protobuf.Parser<ConnectionEvent> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
+    public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface EndPointIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointIdList)
+  public interface EndPointIdOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.EndPointId)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.TopologyId topology_id = 1;</code>
+     * @return Whether the topologyId field is set.
      */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getEndpointIdsList();
+    boolean hasTopologyId();
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.TopologyId topology_id = 1;</code>
+     * @return The topologyId.
      */
-    context.ContextOuterClass.EndPointId getEndpointIds(int index);
+    context.ContextOuterClass.TopologyId getTopologyId();
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.TopologyId topology_id = 1;</code>
      */
-    int getEndpointIdsCount();
+    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return Whether the deviceId field is set.
      */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getEndpointIdsOrBuilderList();
+    boolean hasDeviceId();
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return The deviceId.
      */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-        int index);
+    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.EndPointIdList}
+   * <pre>
+   * ----- Endpoint ------------------------------------------------------------------------------------------------------
+   * </pre>
+   *
+   * Protobuf type {@code context.EndPointId}
    */
-  public static final class EndPointIdList extends
+  public static final class EndPointId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointIdList)
-      EndPointIdListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.EndPointId)
+      EndPointIdOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use EndPointIdList.newBuilder() to construct.
-    private EndPointIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use EndPointId.newBuilder() to construct.
+    private EndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private EndPointIdList() {
-      endpointIds_ = java.util.Collections.emptyList();
+    private EndPointId() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new EndPointIdList();
+      return new EndPointId();
     }
 
     @java.lang.Override
@@ -56925,7 +46592,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private EndPointIdList(
+    private EndPointId(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -56933,7 +46600,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -56945,12 +46611,42 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
+              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+              if (topologyId_ != null) {
+                subBuilder = topologyId_.toBuilder();
               }
-              endpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(topologyId_);
+                topologyId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+              if (deviceId_ != null) {
+                subBuilder = deviceId_.toBuilder();
+              }
+              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(deviceId_);
+                deviceId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 26: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (endpointUuid_ != null) {
+                subBuilder = endpointUuid_.toBuilder();
+              }
+              endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(endpointUuid_);
+                endpointUuid_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -56968,64 +46664,99 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
+      return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
+              context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
     }
 
-    public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
+    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>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.TopologyId topology_id = 1;</code>
+     * @return The topologyId.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
-      return endpointIds_;
+    public context.ContextOuterClass.TopologyId getTopologyId() {
+      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
     }
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.TopologyId topology_id = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getEndpointIdsOrBuilderList() {
-      return endpointIds_;
+    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+      return getTopologyId();
     }
+
+    public static final int DEVICE_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.DeviceId deviceId_;
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return Whether the deviceId field is set.
      */
     @java.lang.Override
-    public int getEndpointIdsCount() {
-      return endpointIds_.size();
+    public boolean hasDeviceId() {
+      return deviceId_ != null;
     }
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.DeviceId device_id = 2;</code>
+     * @return The deviceId.
      */
     @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
-      return endpointIds_.get(index);
+    public context.ContextOuterClass.DeviceId getDeviceId() {
+      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
     }
     /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+     * <code>.context.DeviceId device_id = 2;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-        int index) {
-      return endpointIds_.get(index);
+    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+      return getDeviceId();
+    }
+
+    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 getEndpointUuid();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -57042,8 +46773,14 @@ public final class ContextOuterClass {
     @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));
+      if (topologyId_ != null) {
+        output.writeMessage(1, getTopologyId());
+      }
+      if (deviceId_ != null) {
+        output.writeMessage(2, getDeviceId());
+      }
+      if (endpointUuid_ != null) {
+        output.writeMessage(3, getEndpointUuid());
       }
       unknownFields.writeTo(output);
     }
@@ -57054,9 +46791,17 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < endpointIds_.size(); i++) {
+      if (topologyId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getTopologyId());
+      }
+      if (deviceId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, endpointIds_.get(i));
+          .computeMessageSize(2, getDeviceId());
+      }
+      if (endpointUuid_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, getEndpointUuid());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -57068,13 +46813,26 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.EndPointIdList)) {
+      if (!(obj instanceof context.ContextOuterClass.EndPointId)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
+      context.ContextOuterClass.EndPointId other = (context.ContextOuterClass.EndPointId) obj;
 
-      if (!getEndpointIdsList()
-          .equals(other.getEndpointIdsList())) return false;
+      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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -57086,78 +46844,86 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getEndpointIdsCount() > 0) {
-        hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointIdsList().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) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
+    public static context.ContextOuterClass.EndPointId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
+    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.EndPointIdList parseFrom(
+    public static context.ContextOuterClass.EndPointId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
+    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.EndPointIdList parseFrom(byte[] data)
+    public static context.ContextOuterClass.EndPointId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
+    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.EndPointIdList parseFrom(java.io.InputStream input)
+    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.EndPointIdList parseFrom(
+    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.EndPointIdList parseDelimitedFrom(java.io.InputStream input)
+    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.EndPointIdList parseDelimitedFrom(
+    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.EndPointIdList parseFrom(
+    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.EndPointIdList parseFrom(
+    public static context.ContextOuterClass.EndPointId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -57170,7 +46936,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointIdList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.EndPointId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -57186,26 +46952,30 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.EndPointIdList}
+     * <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.EndPointIdList)
-        context.ContextOuterClass.EndPointIdListOrBuilder {
+        // @@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_EndPointIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
+                context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
+      // Construct using context.ContextOuterClass.EndPointId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -57218,17 +46988,28 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getEndpointIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (topologyIdBuilder_ == null) {
+          topologyId_ = null;
+        } else {
+          topologyId_ = null;
+          topologyIdBuilder_ = null;
+        }
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
+        } else {
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
+        }
+        if (endpointUuidBuilder_ == null) {
+          endpointUuid_ = null;
         } else {
-          endpointIdsBuilder_.clear();
+          endpointUuid_ = null;
+          endpointUuidBuilder_ = null;
         }
         return this;
       }
@@ -57236,17 +47017,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
+        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointIdList.getDefaultInstance();
+      public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
+        return context.ContextOuterClass.EndPointId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointIdList build() {
-        context.ContextOuterClass.EndPointIdList result = buildPartial();
+      public context.ContextOuterClass.EndPointId build() {
+        context.ContextOuterClass.EndPointId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -57254,17 +47035,22 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointIdList buildPartial() {
-        context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (endpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.endpointIds_ = endpointIds_;
+      public context.ContextOuterClass.EndPointId buildPartial() {
+        context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
+        if (topologyIdBuilder_ == null) {
+          result.topologyId_ = topologyId_;
+        } else {
+          result.topologyId_ = topologyIdBuilder_.build();
+        }
+        if (deviceIdBuilder_ == null) {
+          result.deviceId_ = deviceId_;
+        } else {
+          result.deviceId_ = deviceIdBuilder_.build();
+        }
+        if (endpointUuidBuilder_ == null) {
+          result.endpointUuid_ = endpointUuid_;
         } else {
-          result.endpointIds_ = endpointIdsBuilder_.build();
+          result.endpointUuid_ = endpointUuidBuilder_.build();
         }
         onBuilt();
         return result;
@@ -57304,41 +47090,24 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointIdList) {
-          return mergeFrom((context.ContextOuterClass.EndPointIdList)other);
+        if (other instanceof context.ContextOuterClass.EndPointId) {
+          return mergeFrom((context.ContextOuterClass.EndPointId)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_);
-            }
-          }
+      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.unknownFields);
         onChanged();
@@ -57355,11 +47124,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.EndPointIdList parsedMessage = null;
+        context.ContextOuterClass.EndPointId parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -57368,246 +47137,362 @@ public final class ContextOuterClass {
         }
         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 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 topologyIdBuilder_ != null || topologyId_ != null;
+      }
+      /**
+       * <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;
+          onChanged();
+        } else {
+          topologyIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.TopologyId topology_id = 1;</code>
+       */
+      public Builder setTopologyId(
+          context.ContextOuterClass.TopologyId.Builder builderForValue) {
+        if (topologyIdBuilder_ == null) {
+          topologyId_ = builderForValue.build();
+          onChanged();
+        } else {
+          topologyIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.TopologyId topology_id = 1;</code>
+       */
+      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
+        if (topologyIdBuilder_ == null) {
+          if (topologyId_ != null) {
+            topologyId_ =
+              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
+          } else {
+            topologyId_ = value;
+          }
+          onChanged();
+        } else {
+          topologyIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.TopologyId topology_id = 1;</code>
+       */
+      public Builder clearTopologyId() {
+        if (topologyIdBuilder_ == null) {
+          topologyId_ = null;
+          onChanged();
+        } else {
+          topologyId_ = null;
+          topologyIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.TopologyId topology_id = 1;</code>
+       */
+      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+        
+        onChanged();
+        return getTopologyIdFieldBuilder().getBuilder();
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;
-
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.TopologyId topology_id = 1;</code>
        */
-      public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
-        if (endpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(endpointIds_);
+      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+        if (topologyIdBuilder_ != null) {
+          return topologyIdBuilder_.getMessageOrBuilder();
         } else {
-          return endpointIdsBuilder_.getMessageList();
+          return topologyId_ == null ?
+              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
         }
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.TopologyId topology_id = 1;</code>
        */
-      public int getEndpointIdsCount() {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.size();
-        } else {
-          return endpointIdsBuilder_.getCount();
+      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 deviceIdBuilder_ != null || deviceId_ != null;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
+       * @return The deviceId.
        */
-      public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.get(index);
+      public context.ContextOuterClass.DeviceId getDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         } else {
-          return endpointIdsBuilder_.getMessage(index);
+          return deviceIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder setEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
+      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.set(index, value);
+          deviceId_ = value;
           onChanged();
         } else {
-          endpointIdsBuilder_.setMessage(index, value);
+          deviceIdBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder setEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.set(index, builderForValue.build());
+      public Builder setDeviceId(
+          context.ContextOuterClass.DeviceId.Builder builderForValue) {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = builderForValue.build();
           onChanged();
         } else {
-          endpointIdsBuilder_.setMessage(index, builderForValue.build());
+          deviceIdBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+        if (deviceIdBuilder_ == null) {
+          if (deviceId_ != null) {
+            deviceId_ =
+              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
+          } else {
+            deviceId_ = value;
           }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(value);
           onChanged();
         } else {
-          endpointIdsBuilder_.addMessage(value);
+          deviceIdBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder addEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(index, value);
+      public Builder clearDeviceId() {
+        if (deviceIdBuilder_ == null) {
+          deviceId_ = null;
           onChanged();
         } else {
-          endpointIdsBuilder_.addMessage(index, value);
+          deviceId_ = null;
+          deviceIdBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</code>
        */
-      public Builder addEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(builderForValue.build());
-          onChanged();
+      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+        
+        onChanged();
+        return getDeviceIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.DeviceId device_id = 2;</code>
+       */
+      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+        if (deviceIdBuilder_ != null) {
+          return deviceIdBuilder_.getMessageOrBuilder();
         } else {
-          endpointIdsBuilder_.addMessage(builderForValue.build());
+          return deviceId_ == null ?
+              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.DeviceId device_id = 2;</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());
+      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 this;
+        return deviceIdBuilder_;
       }
+
+      private context.ContextOuterClass.Uuid endpointUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> endpointUuidBuilder_;
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
+       * @return Whether the endpointUuid field is set.
        */
-      public Builder addAllEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, endpointIds_);
-          onChanged();
+      public boolean hasEndpointUuid() {
+        return endpointUuidBuilder_ != null || endpointUuid_ != null;
+      }
+      /**
+       * <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 {
-          endpointIdsBuilder_.addAllMessages(values);
+          return endpointUuidBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
        */
-      public Builder clearEndpointIds() {
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
+        if (endpointUuidBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          endpointUuid_ = value;
           onChanged();
         } else {
-          endpointIdsBuilder_.clear();
+          endpointUuidBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
        */
-      public Builder removeEndpointIds(int index) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.remove(index);
+      public Builder setEndpointUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (endpointUuidBuilder_ == null) {
+          endpointUuid_ = builderForValue.build();
           onChanged();
         } else {
-          endpointIdsBuilder_.remove(index);
+          endpointUuidBuilder_.setMessage(builderForValue.build());
         }
+
         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>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
        */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-          int index) {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.get(index);  } else {
-          return endpointIdsBuilder_.getMessageOrBuilder(index);
+      public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
+        if (endpointUuidBuilder_ == null) {
+          if (endpointUuid_ != null) {
+            endpointUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
+          } else {
+            endpointUuid_ = value;
+          }
+          onChanged();
+        } else {
+          endpointUuidBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getEndpointIdsOrBuilderList() {
-        if (endpointIdsBuilder_ != null) {
-          return endpointIdsBuilder_.getMessageOrBuilderList();
+      public Builder clearEndpointUuid() {
+        if (endpointUuidBuilder_ == null) {
+          endpointUuid_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(endpointIds_);
+          endpointUuid_ = null;
+          endpointUuidBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
        */
-      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
-        return getEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
+      public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
+        
+        onChanged();
+        return getEndpointUuidFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 3;</code>
        */
-      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(
-          int index) {
-        return getEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+      public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
+        if (endpointUuidBuilder_ != null) {
+          return endpointUuidBuilder_.getMessageOrBuilder();
+        } else {
+          return endpointUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+        }
       }
       /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+       * <code>.context.Uuid endpoint_uuid = 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_ & 0x00000001) != 0),
+      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());
-          endpointIds_ = null;
+          endpointUuid_ = null;
         }
-        return endpointIdsBuilder_;
+        return endpointUuidBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -57622,95 +47507,143 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.EndPointIdList)
+      // @@protoc_insertion_point(builder_scope:context.EndPointId)
     }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointIdList)
-    private static final context.ContextOuterClass.EndPointIdList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.EndPointId)
+    private static final context.ContextOuterClass.EndPointId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointIdList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointId();
     }
 
-    public static context.ContextOuterClass.EndPointIdList getDefaultInstance() {
+    public static context.ContextOuterClass.EndPointId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<EndPointIdList>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointIdList>() {
+    private static final com.google.protobuf.Parser<EndPointId>
+        PARSER = new com.google.protobuf.AbstractParser<EndPointId>() {
       @java.lang.Override
-      public EndPointIdList parsePartialFrom(
+      public EndPointId parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointIdList(input, extensionRegistry);
+        return new EndPointId(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<EndPointIdList> parser() {
+    public static com.google.protobuf.Parser<EndPointId> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<EndPointIdList> getParserForType() {
+    public com.google.protobuf.Parser<EndPointId> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
+    public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface EndPointNameListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointNameList)
+  public interface EndPointOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.EndPoint)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>.context.EndPointId endpoint_id = 1;</code>
+     * @return Whether the endpointId field is set.
      */
-    java.util.List<context.ContextOuterClass.EndPointName> 
-        getEndpointNamesList();
+    boolean hasEndpointId();
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>.context.EndPointId endpoint_id = 1;</code>
+     * @return The endpointId.
      */
-    context.ContextOuterClass.EndPointName getEndpointNames(int index);
+    context.ContextOuterClass.EndPointId getEndpointId();
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>.context.EndPointId endpoint_id = 1;</code>
      */
-    int getEndpointNamesCount();
+    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>string endpoint_type = 2;</code>
+     * @return The endpointType.
      */
-    java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
-        getEndpointNamesOrBuilderList();
+    java.lang.String getEndpointType();
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>string endpoint_type = 2;</code>
+     * @return The bytes for endpointType.
      */
-    context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
-        int index);
+    com.google.protobuf.ByteString
+        getEndpointTypeBytes();
+
+    /**
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</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 = 3;</code>
+     * @return The count of kpiSampleTypes.
+     */
+    int getKpiSampleTypesCount();
+    /**
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</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 = 3;</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 = 3;</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 = 4;</code>
+     * @return Whether the endpointLocation field is set.
+     */
+    boolean hasEndpointLocation();
+    /**
+     * <code>.context.Location endpoint_location = 4;</code>
+     * @return The endpointLocation.
+     */
+    context.ContextOuterClass.Location getEndpointLocation();
+    /**
+     * <code>.context.Location endpoint_location = 4;</code>
+     */
+    context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder();
   }
   /**
-   * Protobuf type {@code context.EndPointNameList}
+   * Protobuf type {@code context.EndPoint}
    */
-  public static final class EndPointNameList extends
+  public static final class EndPoint extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointNameList)
-      EndPointNameListOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.EndPoint)
+      EndPointOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use EndPointNameList.newBuilder() to construct.
-    private EndPointNameList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use EndPoint.newBuilder() to construct.
+    private EndPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private EndPointNameList() {
-      endpointNames_ = java.util.Collections.emptyList();
+    private EndPoint() {
+      endpointType_ = "";
+      kpiSampleTypes_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new EndPointNameList();
+      return new EndPoint();
     }
 
     @java.lang.Override
@@ -57718,7 +47651,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private EndPointNameList(
+    private EndPoint(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -57738,12 +47671,58 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
+              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+              if (endpointId_ != null) {
+                subBuilder = endpointId_.toBuilder();
+              }
+              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(endpointId_);
+                endpointId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              endpointType_ = s;
+              break;
+            }
+            case 24: {
+              int rawValue = input.readEnum();
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>();
+                kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              endpointNames_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
+              kpiSampleTypes_.add(rawValue);
+              break;
+            }
+            case 26: {
+              int length = input.readRawVarint32();
+              int oldLimit = input.pushLimit(length);
+              while(input.getBytesUntilLimit() > 0) {
+                int rawValue = input.readEnum();
+                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                  kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                kpiSampleTypes_.add(rawValue);
+              }
+              input.popLimit(oldLimit);
+              break;
+            }
+            case 34: {
+              context.ContextOuterClass.Location.Builder subBuilder = null;
+              if (endpointLocation_ != null) {
+                subBuilder = endpointLocation_.toBuilder();
+              }
+              endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(endpointLocation_);
+                endpointLocation_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             default: {
@@ -57762,7 +47741,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
+          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -57770,55 +47749,163 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
+      return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
+              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 getEndpointId();
     }
 
-    public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;
+    public static final int ENDPOINT_TYPE_FIELD_NUMBER = 2;
+    private volatile java.lang.Object endpointType_;
+    /**
+     * <code>string endpoint_type = 2;</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 = 2;</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 = 3;
+    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) {
+                @SuppressWarnings("deprecation")
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
+                return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+              }
+            };
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</code>
+     * @return A list containing the kpiSampleTypes.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
-      return endpointNames_;
+    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 .context.EndPointName endpoint_names = 1;</code>
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</code>
+     * @return The count of kpiSampleTypes.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
-        getEndpointNamesOrBuilderList() {
-      return endpointNames_;
+    public int getKpiSampleTypesCount() {
+      return kpiSampleTypes_.size();
     }
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</code>
+     * @param index The index of the element to return.
+     * @return The kpiSampleTypes at the given index.
      */
     @java.lang.Override
-    public int getEndpointNamesCount() {
-      return endpointNames_.size();
+    public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
+      return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
     }
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</code>
+     * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
      */
     @java.lang.Override
-    public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
-      return endpointNames_.get(index);
+    public java.util.List<java.lang.Integer>
+    getKpiSampleTypesValueList() {
+      return kpiSampleTypes_;
     }
     /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</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 context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
-        int index) {
-      return endpointNames_.get(index);
+    public int getKpiSampleTypesValue(int index) {
+      return kpiSampleTypes_.get(index);
+    }
+    private int kpiSampleTypesMemoizedSerializedSize;
+
+    public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 4;
+    private context.ContextOuterClass.Location endpointLocation_;
+    /**
+     * <code>.context.Location endpoint_location = 4;</code>
+     * @return Whether the endpointLocation field is set.
+     */
+    @java.lang.Override
+    public boolean hasEndpointLocation() {
+      return endpointLocation_ != null;
+    }
+    /**
+     * <code>.context.Location endpoint_location = 4;</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 = 4;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
+      return getEndpointLocation();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -57835,21 +47922,54 @@ public final class ContextOuterClass {
     @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));
+      getSerializedSize();
+      if (endpointId_ != null) {
+        output.writeMessage(1, getEndpointId());
+      }
+      if (!getEndpointTypeBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, endpointType_);
+      }
+      if (getKpiSampleTypesList().size() > 0) {
+        output.writeUInt32NoTag(26);
+        output.writeUInt32NoTag(kpiSampleTypesMemoizedSerializedSize);
+      }
+      for (int i = 0; i < kpiSampleTypes_.size(); i++) {
+        output.writeEnumNoTag(kpiSampleTypes_.get(i));
+      }
+      if (endpointLocation_ != null) {
+        output.writeMessage(4, getEndpointLocation());
+      }
+      unknownFields.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 (!getEndpointTypeBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, 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;
       }
-      unknownFields.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++) {
+      if (endpointLocation_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, endpointNames_.get(i));
+          .computeMessageSize(4, getEndpointLocation());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -57861,13 +47981,24 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.EndPointNameList)) {
+      if (!(obj instanceof context.ContextOuterClass.EndPoint)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
+      context.ContextOuterClass.EndPoint other = (context.ContextOuterClass.EndPoint) obj;
 
-      if (!getEndpointNamesList()
-          .equals(other.getEndpointNamesList())) return false;
+      if (hasEndpointId() != other.hasEndpointId()) return false;
+      if (hasEndpointId()) {
+        if (!getEndpointId()
+            .equals(other.getEndpointId())) 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 (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -57879,78 +48010,88 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getEndpointNamesCount() > 0) {
-        hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointNamesList().hashCode();
+      if (hasEndpointId()) {
+        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getEndpointId().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();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
+    public static context.ContextOuterClass.EndPoint parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
+    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.EndPointNameList parseFrom(
+    public static context.ContextOuterClass.EndPoint parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
+    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.EndPointNameList parseFrom(byte[] data)
+    public static context.ContextOuterClass.EndPoint parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
+    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.EndPointNameList parseFrom(java.io.InputStream input)
+    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.EndPointNameList parseFrom(
+    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.EndPointNameList parseDelimitedFrom(java.io.InputStream input)
+    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.EndPointNameList parseDelimitedFrom(
+    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.EndPointNameList parseFrom(
+    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.EndPointNameList parseFrom(
+    public static context.ContextOuterClass.EndPoint parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -57963,7 +48104,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointNameList prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.EndPoint prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -57979,26 +48120,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.EndPointNameList}
+     * Protobuf type {@code context.EndPoint}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointNameList)
-        context.ContextOuterClass.EndPointNameListOrBuilder {
+        // @@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_EndPointNameList_descriptor;
+        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
+                context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
+      // Construct using context.ContextOuterClass.EndPoint.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -58011,17 +48152,26 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getEndpointNamesFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (endpointNamesBuilder_ == null) {
-          endpointNames_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (endpointIdBuilder_ == null) {
+          endpointId_ = null;
+        } else {
+          endpointId_ = null;
+          endpointIdBuilder_ = null;
+        }
+        endpointType_ = "";
+
+        kpiSampleTypes_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (endpointLocationBuilder_ == null) {
+          endpointLocation_ = null;
         } else {
-          endpointNamesBuilder_.clear();
+          endpointLocation_ = null;
+          endpointLocationBuilder_ = null;
         }
         return this;
       }
@@ -58029,17 +48179,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
+        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointNameList.getDefaultInstance();
+      public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
+        return context.ContextOuterClass.EndPoint.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointNameList build() {
-        context.ContextOuterClass.EndPointNameList result = buildPartial();
+      public context.ContextOuterClass.EndPoint build() {
+        context.ContextOuterClass.EndPoint result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -58047,17 +48197,24 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.EndPointNameList buildPartial() {
-        context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
+      public context.ContextOuterClass.EndPoint buildPartial() {
+        context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
         int from_bitField0_ = bitField0_;
-        if (endpointNamesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.endpointNames_ = endpointNames_;
+        if (endpointIdBuilder_ == null) {
+          result.endpointId_ = endpointId_;
+        } else {
+          result.endpointId_ = endpointIdBuilder_.build();
+        }
+        result.endpointType_ = endpointType_;
+        if (((bitField0_ & 0x00000001) != 0)) {
+          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+          bitField0_ = (bitField0_ & ~0x00000001);
+        }
+        result.kpiSampleTypes_ = kpiSampleTypes_;
+        if (endpointLocationBuilder_ == null) {
+          result.endpointLocation_ = endpointLocation_;
         } else {
-          result.endpointNames_ = endpointNamesBuilder_.build();
+          result.endpointLocation_ = endpointLocationBuilder_.build();
         }
         onBuilt();
         return result;
@@ -58097,41 +48254,35 @@ public final class ContextOuterClass {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointNameList) {
-          return mergeFrom((context.ContextOuterClass.EndPointNameList)other);
+        if (other instanceof context.ContextOuterClass.EndPoint) {
+          return mergeFrom((context.ContextOuterClass.EndPoint)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_);
-            }
+      public Builder mergeFrom(context.ContextOuterClass.EndPoint other) {
+        if (other == context.ContextOuterClass.EndPoint.getDefaultInstance()) return this;
+        if (other.hasEndpointId()) {
+          mergeEndpointId(other.getEndpointId());
+        }
+        if (!other.getEndpointType().isEmpty()) {
+          endpointType_ = other.endpointType_;
+          onChanged();
+        }
+        if (!other.kpiSampleTypes_.isEmpty()) {
+          if (kpiSampleTypes_.isEmpty()) {
+            kpiSampleTypes_ = other.kpiSampleTypes_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            ensureKpiSampleTypesIsMutable();
+            kpiSampleTypes_.addAll(other.kpiSampleTypes_);
           }
+          onChanged();
+        }
+        if (other.hasEndpointLocation()) {
+          mergeEndpointLocation(other.getEndpointLocation());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -58148,11 +48299,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.EndPointNameList parsedMessage = null;
+        context.ContextOuterClass.EndPoint parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -58163,244 +48314,458 @@ public final class ContextOuterClass {
       }
       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 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 endpointIdBuilder_ != null || endpointId_ != null;
       }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> endpointNamesBuilder_;
-
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 1;</code>
+       * @return The endpointId.
        */
-      public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
-        if (endpointNamesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(endpointNames_);
+      public context.ContextOuterClass.EndPointId getEndpointId() {
+        if (endpointIdBuilder_ == null) {
+          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         } else {
-          return endpointNamesBuilder_.getMessageList();
+          return endpointIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 1;</code>
        */
-      public int getEndpointNamesCount() {
-        if (endpointNamesBuilder_ == null) {
-          return endpointNames_.size();
+      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+        if (endpointIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          endpointId_ = value;
+          onChanged();
         } else {
-          return endpointNamesBuilder_.getCount();
+          endpointIdBuilder_.setMessage(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 1;</code>
        */
-      public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
-        if (endpointNamesBuilder_ == null) {
-          return endpointNames_.get(index);
+      public Builder setEndpointId(
+          context.ContextOuterClass.EndPointId.Builder builderForValue) {
+        if (endpointIdBuilder_ == null) {
+          endpointId_ = builderForValue.build();
+          onChanged();
         } else {
-          return endpointNamesBuilder_.getMessage(index);
+          endpointIdBuilder_.setMessage(builderForValue.build());
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 1;</code>
        */
-      public Builder setEndpointNames(
-          int index, context.ContextOuterClass.EndPointName value) {
-        if (endpointNamesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
+      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+        if (endpointIdBuilder_ == null) {
+          if (endpointId_ != null) {
+            endpointId_ =
+              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+          } else {
+            endpointId_ = value;
           }
-          ensureEndpointNamesIsMutable();
-          endpointNames_.set(index, value);
           onChanged();
         } else {
-          endpointNamesBuilder_.setMessage(index, value);
+          endpointIdBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 1;</code>
        */
-      public Builder setEndpointNames(
-          int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.set(index, builderForValue.build());
+      public Builder clearEndpointId() {
+        if (endpointIdBuilder_ == null) {
+          endpointId_ = null;
           onChanged();
         } else {
-          endpointNamesBuilder_.setMessage(index, builderForValue.build());
+          endpointId_ = null;
+          endpointIdBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 1;</code>
        */
-      public Builder addEndpointNames(context.ContextOuterClass.EndPointName value) {
-        if (endpointNamesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointNamesIsMutable();
-          endpointNames_.add(value);
-          onChanged();
+      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+        
+        onChanged();
+        return getEndpointIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.EndPointId endpoint_id = 1;</code>
+       */
+      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+        if (endpointIdBuilder_ != null) {
+          return endpointIdBuilder_.getMessageOrBuilder();
         } else {
-          endpointNamesBuilder_.addMessage(value);
+          return endpointId_ == null ?
+              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.EndPointId endpoint_id = 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();
+      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 endpointType_ = "";
+      /**
+       * <code>string endpoint_type = 2;</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 {
-          endpointNamesBuilder_.addMessage(index, value);
+          return (java.lang.String) ref;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>string endpoint_type = 2;</code>
+       * @return The bytes for endpointType.
        */
-      public Builder addEndpointNames(
-          context.ContextOuterClass.EndPointName.Builder builderForValue) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.add(builderForValue.build());
-          onChanged();
+      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 {
-          endpointNamesBuilder_.addMessage(builderForValue.build());
+          return (com.google.protobuf.ByteString) ref;
         }
+      }
+      /**
+       * <code>string endpoint_type = 2;</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;
+        onChanged();
         return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>string endpoint_type = 2;</code>
+       * @return This builder for chaining.
        */
-      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());
+      public Builder clearEndpointType() {
+        
+        endpointType_ = getDefaultInstance().getEndpointType();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string endpoint_type = 2;</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;
+        onChanged();
+        return this;
+      }
+
+      private java.util.List<java.lang.Integer> kpiSampleTypes_ =
+        java.util.Collections.emptyList();
+      private void ensureKpiSampleTypesIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
+          bitField0_ |= 0x00000001;
+        }
+      }
+      /**
+       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</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 = 3;</code>
+       * @return The count of kpiSampleTypes.
+       */
+      public int getKpiSampleTypesCount() {
+        return kpiSampleTypes_.size();
+      }
+      /**
+       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</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 = 3;</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 .context.EndPointName endpoint_names = 1;</code>
+       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</code>
+       * @param value The kpiSampleTypes to add.
+       * @return This builder for chaining.
        */
-      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);
+      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 .context.EndPointName endpoint_names = 1;</code>
+       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</code>
+       * @param values The kpiSampleTypes to add.
+       * @return This builder for chaining.
        */
-      public Builder clearEndpointNames() {
-        if (endpointNamesBuilder_ == null) {
-          endpointNames_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.clear();
+      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 = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearKpiSampleTypes() {
+        kpiSampleTypes_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 3;</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 = 3;</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 = 3;</code>
+       * @param index The index of the value to return.
+       * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
+       * @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 = 3;</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 = 3;</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 = 4;</code>
+       * @return Whether the endpointLocation field is set.
+       */
+      public boolean hasEndpointLocation() {
+        return endpointLocationBuilder_ != null || endpointLocation_ != null;
+      }
+      /**
+       * <code>.context.Location endpoint_location = 4;</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>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</code>
        */
-      public Builder removeEndpointNames(int index) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.remove(index);
+      public Builder setEndpointLocation(context.ContextOuterClass.Location value) {
+        if (endpointLocationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          endpointLocation_ = value;
           onChanged();
         } else {
-          endpointNamesBuilder_.remove(index);
+          endpointLocationBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</code>
        */
-      public context.ContextOuterClass.EndPointName.Builder getEndpointNamesBuilder(
-          int index) {
-        return getEndpointNamesFieldBuilder().getBuilder(index);
+      public Builder setEndpointLocation(
+          context.ContextOuterClass.Location.Builder builderForValue) {
+        if (endpointLocationBuilder_ == null) {
+          endpointLocation_ = builderForValue.build();
+          onChanged();
+        } else {
+          endpointLocationBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</code>
        */
-      public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
-          int index) {
-        if (endpointNamesBuilder_ == null) {
-          return endpointNames_.get(index);  } else {
-          return endpointNamesBuilder_.getMessageOrBuilder(index);
+      public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
+        if (endpointLocationBuilder_ == null) {
+          if (endpointLocation_ != null) {
+            endpointLocation_ =
+              context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
+          } else {
+            endpointLocation_ = value;
+          }
+          onChanged();
+        } else {
+          endpointLocationBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</code>
        */
-      public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
-           getEndpointNamesOrBuilderList() {
-        if (endpointNamesBuilder_ != null) {
-          return endpointNamesBuilder_.getMessageOrBuilderList();
+      public Builder clearEndpointLocation() {
+        if (endpointLocationBuilder_ == null) {
+          endpointLocation_ = null;
+          onChanged();
         } else {
-          return java.util.Collections.unmodifiableList(endpointNames_);
+          endpointLocation_ = null;
+          endpointLocationBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</code>
        */
-      public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder() {
-        return getEndpointNamesFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointName.getDefaultInstance());
+      public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
+        
+        onChanged();
+        return getEndpointLocationFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</code>
        */
-      public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder(
-          int index) {
-        return getEndpointNamesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointName.getDefaultInstance());
+      public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
+        if (endpointLocationBuilder_ != null) {
+          return endpointLocationBuilder_.getMessageOrBuilder();
+        } else {
+          return endpointLocation_ == null ?
+              context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+        }
       }
       /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+       * <code>.context.Location endpoint_location = 4;</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),
+      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());
-          endpointNames_ = null;
+          endpointLocation_ = null;
         }
-        return endpointNamesBuilder_;
+        return endpointLocationBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -58415,41 +48780,41 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.EndPointNameList)
+      // @@protoc_insertion_point(builder_scope:context.EndPoint)
     }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointNameList)
-    private static final context.ContextOuterClass.EndPointNameList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:context.EndPoint)
+    private static final context.ContextOuterClass.EndPoint DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointNameList();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPoint();
     }
 
-    public static context.ContextOuterClass.EndPointNameList getDefaultInstance() {
+    public static context.ContextOuterClass.EndPoint getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<EndPointNameList>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointNameList>() {
+    private static final com.google.protobuf.Parser<EndPoint>
+        PARSER = new com.google.protobuf.AbstractParser<EndPoint>() {
       @java.lang.Override
-      public EndPointNameList parsePartialFrom(
+      public EndPoint parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointNameList(input, extensionRegistry);
+        return new EndPoint(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<EndPointNameList> parser() {
+    public static com.google.protobuf.Parser<EndPoint> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<EndPointNameList> getParserForType() {
+    public com.google.protobuf.Parser<EndPoint> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
+    public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -65825,538 +56190,32 @@ public final class ContextOuterClass {
       // @@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();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_SLA_Capacity(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 13: {
-
-              capacityGbps_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    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_;
-    /**
-     * <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 (capacityGbps_ != 0F) {
-        output.writeFloat(1, capacityGbps_);
-      }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (capacityGbps_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(1, capacityGbps_);
-      }
-      size += unknownFields.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 (!unknownFields.equals(other.unknownFields)) 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) + unknownFields.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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        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);
-        result.capacityGbps_ = capacityGbps_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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.unknownFields);
-        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 {
-        context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float capacity_gbps = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearCapacityGbps() {
-        
-        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 {
-        return new Constraint_SLA_Capacity(input, extensionRegistry);
-      }
-    };
-
-    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.
+    /**
+     * <code>float capacity_gbps = 1;</code>
+     * @return The capacityGbps.
      */
-    float getAvailability();
+    float getCapacityGbps();
   }
   /**
-   * Protobuf type {@code context.Constraint_SLA_Availability}
+   * Protobuf type {@code context.Constraint_SLA_Capacity}
    */
-  public static final class Constraint_SLA_Availability extends
+  public static final class Constraint_SLA_Capacity extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Availability)
-      Constraint_SLA_AvailabilityOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Capacity)
+      Constraint_SLA_CapacityOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use Constraint_SLA_Availability.newBuilder() to construct.
-    private Constraint_SLA_Availability(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Constraint_SLA_Capacity.newBuilder() to construct.
+    private Constraint_SLA_Capacity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private Constraint_SLA_Availability() {
+    private Constraint_SLA_Capacity() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new Constraint_SLA_Availability();
+      return new Constraint_SLA_Capacity();
     }
 
     @java.lang.Override
@@ -66364,7 +56223,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Constraint_SLA_Availability(
+    private Constraint_SLA_Capacity(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -66382,19 +56241,9 @@ public final class ContextOuterClass {
             case 0:
               done = true;
               break;
-            case 8: {
-
-              numDisjointPaths_ = input.readUInt32();
-              break;
-            }
-            case 16: {
-
-              allActive_ = input.readBool();
-              break;
-            }
-            case 29: {
+            case 13: {
 
-              availability_ = input.readFloat();
+              capacityGbps_ = input.readFloat();
               break;
             }
             default: {
@@ -66418,52 +56267,26 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
+      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_Availability_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_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_;
-    /**
-     * <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_;
-    /**
-     * <code>bool all_active = 2;</code>
-     * @return The allActive.
-     */
-    @java.lang.Override
-    public boolean getAllActive() {
-      return allActive_;
+              context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
     }
 
-    public static final int AVAILABILITY_FIELD_NUMBER = 3;
-    private float availability_;
+    public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
+    private float capacityGbps_;
     /**
-     * <pre>
-     * 0.0 .. 100.0 percentage of availability
-     * </pre>
-     *
-     * <code>float availability = 3;</code>
-     * @return The availability.
+     * <code>float capacity_gbps = 1;</code>
+     * @return The capacityGbps.
      */
     @java.lang.Override
-    public float getAvailability() {
-      return availability_;
+    public float getCapacityGbps() {
+      return capacityGbps_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -66480,14 +56303,8 @@ public final class ContextOuterClass {
     @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 (availability_ != 0F) {
-        output.writeFloat(3, availability_);
+      if (capacityGbps_ != 0F) {
+        output.writeFloat(1, capacityGbps_);
       }
       unknownFields.writeTo(output);
     }
@@ -66498,17 +56315,9 @@ public final class ContextOuterClass {
       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 (availability_ != 0F) {
+      if (capacityGbps_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, availability_);
+          .computeFloatSize(1, capacityGbps_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -66520,18 +56329,14 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Availability)) {
+      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Capacity)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.Constraint_SLA_Availability other = (context.ContextOuterClass.Constraint_SLA_Availability) obj;
+      context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
 
-      if (getNumDisjointPaths()
-          != other.getNumDisjointPaths()) return false;
-      if (getAllActive()
-          != other.getAllActive()) return false;
-      if (java.lang.Float.floatToIntBits(getAvailability())
+      if (java.lang.Float.floatToIntBits(getCapacityGbps())
           != java.lang.Float.floatToIntBits(
-              other.getAvailability())) return false;
+              other.getCapacityGbps())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -66543,82 +56348,77 @@ public final class ContextOuterClass {
       }
       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 = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
       hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getAvailability());
+          getCapacityGbps());
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
+    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_Availability parseFrom(
+    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_Availability parseFrom(
+    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_Availability parseFrom(
+    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_Availability parseFrom(byte[] data)
+    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_Availability parseFrom(
+    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_Availability parseFrom(java.io.InputStream input)
+    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_Availability parseFrom(
+    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_Availability parseDelimitedFrom(java.io.InputStream input)
+    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_Availability parseDelimitedFrom(
+    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_Availability parseFrom(
+    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_Availability parseFrom(
+    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -66631,7 +56431,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Availability prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Capacity prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -66647,26 +56447,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Constraint_SLA_Availability}
+     * 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_Availability)
-        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder {
+        // @@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_Availability_descriptor;
+        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_Availability_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
+                context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
+      // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -66684,11 +56484,7 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        numDisjointPaths_ = 0;
-
-        allActive_ = false;
-
-        availability_ = 0F;
+        capacityGbps_ = 0F;
 
         return this;
       }
@@ -66696,17 +56492,17 @@ public final class ContextOuterClass {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
+        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+      public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
+        return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability build() {
-        context.ContextOuterClass.Constraint_SLA_Availability result = buildPartial();
+      public context.ContextOuterClass.Constraint_SLA_Capacity build() {
+        context.ContextOuterClass.Constraint_SLA_Capacity result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -66714,11 +56510,9 @@ public final class ContextOuterClass {
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
-        context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
-        result.numDisjointPaths_ = numDisjointPaths_;
-        result.allActive_ = allActive_;
-        result.availability_ = availability_;
+      public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
+        context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
+        result.capacityGbps_ = capacityGbps_;
         onBuilt();
         return result;
       }
@@ -66757,24 +56551,18 @@ public final class ContextOuterClass {
       }
       @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);
+        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_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());
+      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.unknownFields);
         onChanged();
@@ -66791,11 +56579,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
+        context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -66805,107 +56593,33 @@ public final class ContextOuterClass {
         return this;
       }
 
-      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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 num_disjoint_paths = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearNumDisjointPaths() {
-        
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool all_active = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAllActive() {
-        
-        allActive_ = false;
-        onChanged();
-        return this;
-      }
-
-      private float availability_ ;
+      private float capacityGbps_ ;
       /**
-       * <pre>
-       * 0.0 .. 100.0 percentage of availability
-       * </pre>
-       *
-       * <code>float availability = 3;</code>
-       * @return The availability.
+       * <code>float capacity_gbps = 1;</code>
+       * @return The capacityGbps.
        */
       @java.lang.Override
-      public float getAvailability() {
-        return availability_;
+      public float getCapacityGbps() {
+        return capacityGbps_;
       }
       /**
-       * <pre>
-       * 0.0 .. 100.0 percentage of availability
-       * </pre>
-       *
-       * <code>float availability = 3;</code>
-       * @param value The availability to set.
+       * <code>float capacity_gbps = 1;</code>
+       * @param value The capacityGbps to set.
        * @return This builder for chaining.
        */
-      public Builder setAvailability(float value) {
+      public Builder setCapacityGbps(float value) {
         
-        availability_ = value;
+        capacityGbps_ = value;
         onChanged();
         return this;
       }
       /**
-       * <pre>
-       * 0.0 .. 100.0 percentage of availability
-       * </pre>
-       *
-       * <code>float availability = 3;</code>
+       * <code>float capacity_gbps = 1;</code>
        * @return This builder for chaining.
        */
-      public Builder clearAvailability() {
+      public Builder clearCapacityGbps() {
         
-        availability_ = 0F;
+        capacityGbps_ = 0F;
         onChanged();
         return this;
       }
@@ -66922,100 +56636,82 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Availability)
+      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Capacity)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Availability)
-    private static final context.ContextOuterClass.Constraint_SLA_Availability DEFAULT_INSTANCE;
+    // @@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_Availability();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Capacity();
     }
 
-    public static context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstance() {
+    public static context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<Constraint_SLA_Availability>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Availability>() {
+    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_Availability parsePartialFrom(
+      public Constraint_SLA_Capacity parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_SLA_Availability(input, extensionRegistry);
+        return new Constraint_SLA_Capacity(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Constraint_SLA_Availability> parser() {
+    public static com.google.protobuf.Parser<Constraint_SLA_Capacity> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_SLA_Availability> getParserForType() {
+    public com.google.protobuf.Parser<Constraint_SLA_Capacity> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
+    public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface Constraint_SLA_Isolation_levelOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Isolation_level)
+  public interface Constraint_SLA_AvailabilityOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Availability)
       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.
+     * <code>uint32 num_disjoint_paths = 1;</code>
+     * @return The numDisjointPaths.
      */
-    java.util.List<java.lang.Integer>
-    getIsolationLevelValueList();
+    int getNumDisjointPaths();
+
     /**
-     * <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.
+     * <code>bool all_active = 2;</code>
+     * @return The allActive.
      */
-    int getIsolationLevelValue(int index);
+    boolean getAllActive();
   }
   /**
-   * Protobuf type {@code context.Constraint_SLA_Isolation_level}
+   * Protobuf type {@code context.Constraint_SLA_Availability}
    */
-  public static final class Constraint_SLA_Isolation_level extends
+  public static final class Constraint_SLA_Availability extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Isolation_level)
-      Constraint_SLA_Isolation_levelOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Availability)
+      Constraint_SLA_AvailabilityOrBuilder {
   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) {
+    // Use Constraint_SLA_Availability.newBuilder() to construct.
+    private Constraint_SLA_Availability(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
-    private Constraint_SLA_Isolation_level() {
-      isolationLevel_ = java.util.Collections.emptyList();
+    private Constraint_SLA_Availability() {
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new Constraint_SLA_Isolation_level();
+      return new Constraint_SLA_Availability();
     }
 
     @java.lang.Override
@@ -67023,7 +56719,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Constraint_SLA_Isolation_level(
+    private Constraint_SLA_Availability(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -67031,7 +56727,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -67043,26 +56738,13 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 8: {
-              int rawValue = input.readEnum();
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              isolationLevel_.add(rawValue);
+
+              numDisjointPaths_ = input.readUInt32();
               break;
             }
-            case 10: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                  isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
-                  mutable_bitField0_ |= 0x00000001;
-                }
-                isolationLevel_.add(rawValue);
-              }
-              input.popLimit(oldLimit);
+            case 16: {
+
+              allActive_ = input.readBool();
               break;
             }
             default: {
@@ -67080,83 +56762,44 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
+      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_Isolation_level_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
+              context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
     }
 
-    public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
-    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) {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(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));
-    }
+    public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
+    private int numDisjointPaths_;
     /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return A list containing the enum numeric values on the wire for isolationLevel.
+     * <code>uint32 num_disjoint_paths = 1;</code>
+     * @return The numDisjointPaths.
      */
     @java.lang.Override
-    public java.util.List<java.lang.Integer>
-    getIsolationLevelValueList() {
-      return isolationLevel_;
+    public int getNumDisjointPaths() {
+      return numDisjointPaths_;
     }
+
+    public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
+    private boolean allActive_;
     /**
-     * <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.
+     * <code>bool all_active = 2;</code>
+     * @return The allActive.
      */
     @java.lang.Override
-    public int getIsolationLevelValue(int index) {
-      return isolationLevel_.get(index);
+    public boolean getAllActive() {
+      return allActive_;
     }
-    private int isolationLevelMemoizedSerializedSize;
 
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
@@ -67172,13 +56815,11 @@ public final class ContextOuterClass {
     @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);
+      if (numDisjointPaths_ != 0) {
+        output.writeUInt32(1, numDisjointPaths_);
       }
-      for (int i = 0; i < isolationLevel_.size(); i++) {
-        output.writeEnumNoTag(isolationLevel_.get(i));
+      if (allActive_ != false) {
+        output.writeBool(2, allActive_);
       }
       unknownFields.writeTo(output);
     }
@@ -67189,17 +56830,13 @@ public final class ContextOuterClass {
       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;
+      if (numDisjointPaths_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(1, numDisjointPaths_);
+      }
+      if (allActive_ != false) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(2, allActive_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -67211,12 +56848,15 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level)) {
+      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Availability)) {
         return super.equals(obj);
       }
-      context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
+      context.ContextOuterClass.Constraint_SLA_Availability other = (context.ContextOuterClass.Constraint_SLA_Availability) obj;
 
-      if (!isolationLevel_.equals(other.isolationLevel_)) return false;
+      if (getNumDisjointPaths()
+          != other.getNumDisjointPaths()) return false;
+      if (getAllActive()
+          != other.getAllActive()) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -67228,78 +56868,79 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getIsolationLevelCount() > 0) {
-        hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
-        hash = (53 * hash) + isolationLevel_.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 = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
+    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_Isolation_level parseFrom(
+    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_Isolation_level parseFrom(
+    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_Isolation_level parseFrom(
+    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_Isolation_level parseFrom(byte[] data)
+    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_Isolation_level parseFrom(
+    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_Isolation_level parseFrom(java.io.InputStream input)
+    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_Isolation_level parseFrom(
+    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_Isolation_level parseDelimitedFrom(java.io.InputStream input)
+    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_Isolation_level parseDelimitedFrom(
+    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_Isolation_level parseFrom(
+    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_Isolation_level parseFrom(
+    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -67312,7 +56953,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Isolation_level prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Availability prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -67328,26 +56969,26 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Constraint_SLA_Isolation_level}
+     * 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_Isolation_level)
-        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder {
+        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_Isolation_level_descriptor;
+        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_Isolation_level_fieldAccessorTable
+        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
+                context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
       }
 
-      // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
+      // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -67365,25 +57006,27 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        isolationLevel_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
+        numDisjointPaths_ = 0;
+
+        allActive_ = false;
+
         return this;
       }
 
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
+        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+      public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
+        return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
       }
 
       @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level build() {
-        context.ContextOuterClass.Constraint_SLA_Isolation_level result = buildPartial();
+      public context.ContextOuterClass.Constraint_SLA_Availability build() {
+        context.ContextOuterClass.Constraint_SLA_Availability result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -67391,14 +57034,10 @@ public final class ContextOuterClass {
       }
 
       @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);
-        int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.isolationLevel_ = isolationLevel_;
+      public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
+        context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
+        result.numDisjointPaths_ = numDisjointPaths_;
+        result.allActive_ = allActive_;
         onBuilt();
         return result;
       }
@@ -67437,25 +57076,21 @@ public final class ContextOuterClass {
       }
       @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);
+        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_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();
+      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());
         }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
@@ -67472,11 +57107,11 @@ public final class ContextOuterClass {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
+        context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
+          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -67485,144 +57120,65 @@ public final class ContextOuterClass {
         }
         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;
-      }
+      private int numDisjointPaths_ ;
       /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param value The isolationLevel to add.
-       * @return This builder for chaining.
+       * <code>uint32 num_disjoint_paths = 1;</code>
+       * @return The numDisjointPaths.
        */
-      public Builder addIsolationLevel(context.ContextOuterClass.IsolationLevelEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.add(value.getNumber());
-        onChanged();
-        return this;
+      @java.lang.Override
+      public int getNumDisjointPaths() {
+        return numDisjointPaths_;
       }
       /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param values The isolationLevel to add.
+       * <code>uint32 num_disjoint_paths = 1;</code>
+       * @param value The numDisjointPaths to set.
        * @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());
-        }
+      public Builder setNumDisjointPaths(int value) {
+        
+        numDisjointPaths_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * <code>uint32 num_disjoint_paths = 1;</code>
        * @return This builder for chaining.
        */
-      public Builder clearIsolationLevel() {
-        isolationLevel_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder clearNumDisjointPaths() {
+        
+        numDisjointPaths_ = 0;
         onChanged();
         return this;
       }
+
+      private boolean allActive_ ;
       /**
-       * <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 of the value to return.
-       * @return The enum numeric value on the wire of isolationLevel at the given index.
-       * @return This builder for chaining.
+       * <code>bool all_active = 2;</code>
+       * @return The allActive.
        */
-      public Builder setIsolationLevelValue(
-          int index, int value) {
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.set(index, value);
-        onChanged();
-        return this;
+      @java.lang.Override
+      public boolean getAllActive() {
+        return allActive_;
       }
       /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param value The enum numeric value on the wire for isolationLevel to add.
+       * <code>bool all_active = 2;</code>
+       * @param value The allActive to set.
        * @return This builder for chaining.
        */
-      public Builder addIsolationLevelValue(int value) {
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.add(value);
+      public Builder setAllActive(boolean value) {
+        
+        allActive_ = 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.
+       * <code>bool all_active = 2;</code>
        * @return This builder for chaining.
        */
-      public Builder addAllIsolationLevelValue(
-          java.lang.Iterable<java.lang.Integer> values) {
-        ensureIsolationLevelIsMutable();
-        for (int value : values) {
-          isolationLevel_.add(value);
-        }
+      public Builder clearAllActive() {
+        
+        allActive_ = false;
         onChanged();
         return this;
       }
@@ -67639,151 +57195,100 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Isolation_level)
+      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Availability)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Isolation_level)
-    private static final context.ContextOuterClass.Constraint_SLA_Isolation_level DEFAULT_INSTANCE;
+    // @@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_Isolation_level();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Availability();
     }
 
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstance() {
+    public static context.ContextOuterClass.Constraint_SLA_Availability 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>() {
+    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_Isolation_level parsePartialFrom(
+      public Constraint_SLA_Availability parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_SLA_Isolation_level(input, extensionRegistry);
+        return new Constraint_SLA_Availability(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Constraint_SLA_Isolation_level> parser() {
+    public static com.google.protobuf.Parser<Constraint_SLA_Availability> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_SLA_Isolation_level> getParserForType() {
+    public com.google.protobuf.Parser<Constraint_SLA_Availability> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
+    public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
-  public interface Constraint_ExclusionsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_Exclusions)
+  public interface Constraint_SLA_Isolation_levelOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Isolation_level)
       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>
+     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+     * @return A list containing the isolationLevel.
      */
-    java.util.List<context.ContextOuterClass.LinkId> 
-        getLinkIdsList();
+    java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList();
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+     * @return The count of isolationLevel.
      */
-    context.ContextOuterClass.LinkId getLinkIds(int index);
+    int getIsolationLevelCount();
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+     * @param index The index of the element to return.
+     * @return The isolationLevel at the given index.
      */
-    int getLinkIdsCount();
+    context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index);
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+     * @return A list containing the enum numeric values on the wire for isolationLevel.
      */
-    java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList();
+    java.util.List<java.lang.Integer>
+    getIsolationLevelValueList();
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <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.
      */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index);
+    int getIsolationLevelValue(int index);
   }
   /**
-   * Protobuf type {@code context.Constraint_Exclusions}
+   * Protobuf type {@code context.Constraint_SLA_Isolation_level}
    */
-  public static final class Constraint_Exclusions extends
+  public static final class Constraint_SLA_Isolation_level extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_Exclusions)
-      Constraint_ExclusionsOrBuilder {
+      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Isolation_level)
+      Constraint_SLA_Isolation_levelOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use Constraint_Exclusions.newBuilder() to construct.
-    private Constraint_Exclusions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    // Use Constraint_SLA_Isolation_level.newBuilder() to construct.
+    private Constraint_SLA_Isolation_level(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();
+    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_Exclusions();
+      return new Constraint_SLA_Isolation_level();
     }
 
     @java.lang.Override
@@ -67791,7 +57296,7 @@ public final class ContextOuterClass {
     getUnknownFields() {
       return this.unknownFields;
     }
-    private Constraint_Exclusions(
+    private Constraint_SLA_Isolation_level(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -67811,35 +57316,26 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 8: {
-
-              isPermanent_ = input.readBool();
-              break;
-            }
-            case 18: {
+              int rawValue = input.readEnum();
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
                 mutable_bitField0_ |= 0x00000001;
               }
-              deviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              endpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+              isolationLevel_.add(rawValue);
               break;
             }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
-                mutable_bitField0_ |= 0x00000004;
+            case 10: {
+              int length = input.readRawVarint32();
+              int oldLimit = input.pushLimit(length);
+              while(input.getBytesUntilLimit() > 0) {
+                int rawValue = input.readEnum();
+                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                  isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                isolationLevel_.add(rawValue);
               }
-              linkIds_.add(
-                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+              input.popLimit(oldLimit);
               break;
             }
             default: {
@@ -67858,13 +57354,7 @@ public final class ContextOuterClass {
             e).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -67872,147 +57362,74 @@ public final class ContextOuterClass {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
+      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_Exclusions_fieldAccessorTable
+      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_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_;
-    /**
-     * <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;
-    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;
-    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);
+              context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
     }
 
-    public static final int LINK_IDS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
+    public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
+    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) {
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
+                return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
+              }
+            };
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+     * @return A list containing the isolationLevel.
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-      return linkIds_;
+    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.LinkId link_ids = 4;</code>
+     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+     * @return The count of isolationLevel.
      */
     @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList() {
-      return linkIds_;
+    public int getIsolationLevelCount() {
+      return isolationLevel_.size();
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <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 int getLinkIdsCount() {
-      return linkIds_.size();
+    public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
+      return isolationLevel_converter_.convert(isolationLevel_.get(index));
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <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 context.ContextOuterClass.LinkId getLinkIds(int index) {
-      return linkIds_.get(index);
+    public java.util.List<java.lang.Integer>
+    getIsolationLevelValueList() {
+      return isolationLevel_;
     }
     /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
+     * <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 context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index) {
-      return linkIds_.get(index);
+    public int getIsolationLevelValue(int index) {
+      return isolationLevel_.get(index);
     }
+    private int isolationLevelMemoizedSerializedSize;
 
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
@@ -68028,17 +57445,13 @@ public final class ContextOuterClass {
     @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));
+      getSerializedSize();
+      if (getIsolationLevelList().size() > 0) {
+        output.writeUInt32NoTag(10);
+        output.writeUInt32NoTag(isolationLevelMemoizedSerializedSize);
       }
-      for (int i = 0; i < linkIds_.size(); i++) {
-        output.writeMessage(4, linkIds_.get(i));
+      for (int i = 0; i < isolationLevel_.size(); i++) {
+        output.writeEnumNoTag(isolationLevel_.get(i));
       }
       unknownFields.writeTo(output);
     }
@@ -68049,21 +57462,17 @@ public final class ContextOuterClass {
       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));
+      {
+        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 += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -68075,19 +57484,12 @@ public final class ContextOuterClass {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_Exclusions)) {
+      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level)) {
         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;
+      }
+      context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
+
+      if (!isolationLevel_.equals(other.isolationLevel_)) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -68099,89 +57501,78 @@ public final class ContextOuterClass {
       }
       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();
+      if (getIsolationLevelCount() > 0) {
+        hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
+        hash = (53 * hash) + isolationLevel_.hashCode();
       }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
+    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_Exclusions parseFrom(
+    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_Exclusions parseFrom(
+    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_Exclusions parseFrom(
+    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_Exclusions parseFrom(byte[] data)
+    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_Exclusions parseFrom(
+    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_Exclusions parseFrom(java.io.InputStream input)
+    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_Exclusions parseFrom(
+    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_Exclusions parseDelimitedFrom(java.io.InputStream input)
+    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_Exclusions parseDelimitedFrom(
+    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_Exclusions parseFrom(
+    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_Exclusions parseFrom(
+    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -68194,7 +57585,7 @@ public final class ContextOuterClass {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_Exclusions prototype) {
+    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Isolation_level prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -68210,1029 +57601,303 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
-     * Protobuf type {@code context.Constraint_Exclusions}
+     * 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_Exclusions)
-        context.ContextOuterClass.Constraint_ExclusionsOrBuilder {
+        // @@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_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() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDeviceIdsFieldBuilder();
-          getEndpointIdsFieldBuilder();
-          getLinkIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        isPermanent_ = false;
-
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          endpointIdsBuilder_.clear();
-        }
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        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);
-        int from_bitField0_ = bitField0_;
-        result.isPermanent_ = isPermanent_;
-        if (deviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        if (endpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.endpointIds_ = endpointIds_;
-        } else {
-          result.endpointIds_ = endpointIdsBuilder_.build();
-        }
-        if (linkIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.linkIds_ = linkIds_;
-        } else {
-          result.linkIds_ = linkIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @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_ & ~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_);
-            }
-          }
-        }
-        if (endpointIdsBuilder_ == null) {
-          if (!other.endpointIds_.isEmpty()) {
-            if (endpointIds_.isEmpty()) {
-              endpointIds_ = other.endpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureEndpointIdsIsMutable();
-              endpointIds_.addAll(other.endpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.endpointIds_.isEmpty()) {
-            if (endpointIdsBuilder_.isEmpty()) {
-              endpointIdsBuilder_.dispose();
-              endpointIdsBuilder_ = null;
-              endpointIds_ = other.endpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              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_ & ~0x00000004);
-            } else {
-              ensureLinkIdsIsMutable();
-              linkIds_.addAll(other.linkIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIdsBuilder_.isEmpty()) {
-              linkIdsBuilder_.dispose();
-              linkIdsBuilder_ = null;
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              linkIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinkIdsFieldBuilder() : null;
-            } else {
-              linkIdsBuilder_.addAllMessages(other.linkIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        context.ContextOuterClass.Constraint_Exclusions parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_Exclusions) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool is_permanent = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIsPermanent() {
-        
-        isPermanent_ = false;
-        onChanged();
-        return this;
-      }
-
-      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 = 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_ & ~0x00000001);
-          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_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          deviceIds_ = null;
-        }
-        return deviceIdsBuilder_;
+        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
       }
 
-      private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
-          bitField0_ |= 0x00000002;
-         }
+      @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);
       }
 
-      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();
-        }
+      // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public int getEndpointIdsCount() {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.size();
-        } else {
-          return endpointIdsBuilder_.getCount();
-        }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      /**
-       * <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);
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
         }
       }
-      /**
-       * <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);
-        }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        isolationLevel_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
         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;
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
       }
-      /**
-       * <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;
+
+      @java.lang.Override
+      public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
+        return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
       }
-      /**
-       * <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);
+
+      @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 this;
+        return result;
       }
-      /**
-       * <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());
+
+      @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);
+        int from_bitField0_ = bitField0_;
+        if (((bitField0_ & 0x00000001) != 0)) {
+          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
+          bitField0_ = (bitField0_ & ~0x00000001);
         }
-        return this;
+        result.isolationLevel_ = isolationLevel_;
+        onBuilt();
+        return result;
       }
-      /**
-       * <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;
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
       }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder clearEndpointIds() {
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.clear();
-        }
-        return this;
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
       }
-      /**
-       * <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;
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
       }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(
-          int index) {
-        return getEndpointIdsFieldBuilder().getBuilder(index);
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
       }
-      /**
-       * <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);
-        }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
       }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getEndpointIdsOrBuilderList() {
-        if (endpointIdsBuilder_ != null) {
-          return endpointIdsBuilder_.getMessageOrBuilderList();
+      @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 {
-          return java.util.Collections.unmodifiableList(endpointIds_);
+          super.mergeFrom(other);
+          return this;
         }
       }
-      /**
-       * <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_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          endpointIds_ = null;
+
+      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();
         }
-        return endpointIdsBuilder_;
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
       }
 
-      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
-        java.util.Collections.emptyList();
-      private void ensureLinkIdsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-          bitField0_ |= 0x00000004;
-         }
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
       }
 
-      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();
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
-          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());
+      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;
         }
-        return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * @return A list containing the isolationLevel.
        */
-      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;
+      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.LinkId link_ids = 4;</code>
+       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * @return The count of isolationLevel.
        */
-      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;
+      public int getIsolationLevelCount() {
+        return isolationLevel_.size();
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <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 Builder addLinkIds(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
+      public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
+        return isolationLevel_converter_.convert(isolationLevel_.get(index));
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <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 addLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, builderForValue.build());
+      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.LinkId link_ids = 4;</code>
+       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * @param value The isolationLevel to add.
+       * @return This builder for chaining.
        */
-      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);
+      public Builder addIsolationLevel(context.ContextOuterClass.IsolationLevelEnum value) {
+        if (value == null) {
+          throw new NullPointerException();
         }
+        ensureIsolationLevelIsMutable();
+        isolationLevel_.add(value.getNumber());
+        onChanged();
         return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * @param values The isolationLevel to add.
+       * @return This builder for chaining.
        */
-      public Builder clearLinkIds() {
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          linkIdsBuilder_.clear();
+      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.LinkId link_ids = 4;</code>
+       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * @return This builder for chaining.
        */
-      public Builder removeLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.remove(index);
-          onChanged();
-        } else {
-          linkIdsBuilder_.remove(index);
-        }
+      public Builder clearIsolationLevel() {
+        isolationLevel_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
         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>
+       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+       * @return A list containing the enum numeric values on the wire for isolationLevel.
        */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-          int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);  } else {
-          return linkIdsBuilder_.getMessageOrBuilder(index);
-        }
+      public java.util.List<java.lang.Integer>
+      getIsolationLevelValueList() {
+        return java.util.Collections.unmodifiableList(isolationLevel_);
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <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 java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-           getLinkIdsOrBuilderList() {
-        if (linkIdsBuilder_ != null) {
-          return linkIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        }
+      public int getIsolationLevelValue(int index) {
+        return isolationLevel_.get(index);
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <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.
+       * @return This builder for chaining.
        */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
-        return getLinkIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.LinkId.getDefaultInstance());
+      public Builder setIsolationLevelValue(
+          int index, int value) {
+        ensureIsolationLevelIsMutable();
+        isolationLevel_.set(index, value);
+        onChanged();
+        return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <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 context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.LinkId.getDefaultInstance());
+      public Builder addIsolationLevelValue(int value) {
+        ensureIsolationLevelIsMutable();
+        isolationLevel_.add(value);
+        onChanged();
+        return this;
       }
       /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
+       * <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 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_ & 0x00000004) != 0),
-                  getParentForChildren(),
-                  isClean());
-          linkIds_ = null;
+      public Builder addAllIsolationLevelValue(
+          java.lang.Iterable<java.lang.Integer> values) {
+        ensureIsolationLevelIsMutable();
+        for (int value : values) {
+          isolationLevel_.add(value);
         }
-        return linkIdsBuilder_;
+        onChanged();
+        return this;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -69247,41 +57912,41 @@ public final class ContextOuterClass {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:context.Constraint_Exclusions)
+      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Isolation_level)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_Exclusions)
-    private static final context.ContextOuterClass.Constraint_Exclusions DEFAULT_INSTANCE;
+    // @@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_Exclusions();
+      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Isolation_level();
     }
 
-    public static context.ContextOuterClass.Constraint_Exclusions getDefaultInstance() {
+    public static context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<Constraint_Exclusions>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_Exclusions>() {
+    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_Exclusions parsePartialFrom(
+      public Constraint_SLA_Isolation_level parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_Exclusions(input, extensionRegistry);
+        return new Constraint_SLA_Isolation_level(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<Constraint_Exclusions> parser() {
+    public static com.google.protobuf.Parser<Constraint_SLA_Isolation_level> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_Exclusions> getParserForType() {
+    public com.google.protobuf.Parser<Constraint_SLA_Isolation_level> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
+    public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -69411,21 +58076,6 @@ public final class ContextOuterClass {
      */
     context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();
 
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-     * @return Whether the exclusions field is set.
-     */
-    boolean hasExclusions();
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-     * @return The exclusions.
-     */
-    context.ContextOuterClass.Constraint_Exclusions getExclusions();
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-     */
-    context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
-
     public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
   }
   /**
@@ -69585,20 +58235,6 @@ public final class ContextOuterClass {
               constraintCase_ = 8;
               break;
             }
-            case 74: {
-              context.ContextOuterClass.Constraint_Exclusions.Builder subBuilder = null;
-              if (constraintCase_ == 9) {
-                subBuilder = ((context.ContextOuterClass.Constraint_Exclusions) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_Exclusions.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Exclusions) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 9;
-              break;
-            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -69644,7 +58280,6 @@ public final class ContextOuterClass {
       SLA_LATENCY(6),
       SLA_AVAILABILITY(7),
       SLA_ISOLATION(8),
-      EXCLUSIONS(9),
       CONSTRAINT_NOT_SET(0);
       private final int value;
       private ConstraintCase(int value) {
@@ -69670,7 +58305,6 @@ public final class ContextOuterClass {
           case 6: return SLA_LATENCY;
           case 7: return SLA_AVAILABILITY;
           case 8: return SLA_ISOLATION;
-          case 9: return EXCLUSIONS;
           case 0: return CONSTRAINT_NOT_SET;
           default: return null;
         }
@@ -69934,37 +58568,6 @@ public final class ContextOuterClass {
       return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
     }
 
-    public static final int EXCLUSIONS_FIELD_NUMBER = 9;
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-     * @return Whether the exclusions field is set.
-     */
-    @java.lang.Override
-    public boolean hasExclusions() {
-      return constraintCase_ == 9;
-    }
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-     * @return The exclusions.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
-      if (constraintCase_ == 9) {
-         return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
-      if (constraintCase_ == 9) {
-         return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-    }
-
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -70003,9 +58606,6 @@ public final class ContextOuterClass {
       if (constraintCase_ == 8) {
         output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
       }
-      if (constraintCase_ == 9) {
-        output.writeMessage(9, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
-      }
       unknownFields.writeTo(output);
     }
 
@@ -70047,10 +58647,6 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
       }
-      if (constraintCase_ == 9) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
-      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -70100,10 +58696,6 @@ public final class ContextOuterClass {
           if (!getSlaIsolation()
               .equals(other.getSlaIsolation())) return false;
           break;
-        case 9:
-          if (!getExclusions()
-              .equals(other.getExclusions())) return false;
-          break;
         case 0:
         default:
       }
@@ -70151,10 +58743,6 @@ public final class ContextOuterClass {
           hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
           hash = (53 * hash) + getSlaIsolation().hashCode();
           break;
-        case 9:
-          hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER;
-          hash = (53 * hash) + getExclusions().hashCode();
-          break;
         case 0:
         default:
       }
@@ -70375,13 +58963,6 @@ public final class ContextOuterClass {
             result.constraint_ = slaIsolationBuilder_.build();
           }
         }
-        if (constraintCase_ == 9) {
-          if (exclusionsBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = exclusionsBuilder_.build();
-          }
-        }
         result.constraintCase_ = constraintCase_;
         onBuilt();
         return result;
@@ -70464,10 +59045,6 @@ public final class ContextOuterClass {
             mergeSlaIsolation(other.getSlaIsolation());
             break;
           }
-          case EXCLUSIONS: {
-            mergeExclusions(other.getExclusions());
-            break;
-          }
           case CONSTRAINT_NOT_SET: {
             break;
           }
@@ -71643,147 +60220,6 @@ public final class ContextOuterClass {
         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 = 9;</code>
-       * @return Whether the exclusions field is set.
-       */
-      @java.lang.Override
-      public boolean hasExclusions() {
-        return constraintCase_ == 9;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-       * @return The exclusions.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
-        if (exclusionsBuilder_ == null) {
-          if (constraintCase_ == 9) {
-            return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 9) {
-            return exclusionsBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</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_ = 9;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-       */
-      public Builder setExclusions(
-          context.ContextOuterClass.Constraint_Exclusions.Builder builderForValue) {
-        if (exclusionsBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          exclusionsBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 9;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-       */
-      public Builder mergeExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
-        if (exclusionsBuilder_ == null) {
-          if (constraintCase_ == 9 &&
-              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_ == 9) {
-            exclusionsBuilder_.mergeFrom(value);
-          }
-          exclusionsBuilder_.setMessage(value);
-        }
-        constraintCase_ = 9;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-       */
-      public Builder clearExclusions() {
-        if (exclusionsBuilder_ == null) {
-          if (constraintCase_ == 9) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 9) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          exclusionsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-       */
-      public context.ContextOuterClass.Constraint_Exclusions.Builder getExclusionsBuilder() {
-        return getExclusionsFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
-        if ((constraintCase_ == 9) && (exclusionsBuilder_ != null)) {
-          return exclusionsBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 9) {
-            return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 9;</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_ == 9)) {
-            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_ = 9;
-        onChanged();;
-        return exclusionsBuilder_;
-      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -73433,11 +61869,6 @@ public final class ContextOuterClass {
   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 
@@ -73463,11 +61894,6 @@ public final class ContextOuterClass {
   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_DeviceConfig_descriptor;
   private static final 
@@ -73483,11 +61909,6 @@ public final class ContextOuterClass {
   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 
@@ -73548,11 +61969,6 @@ public final class ContextOuterClass {
   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 
@@ -73593,11 +62009,6 @@ public final class ContextOuterClass {
   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 
@@ -73663,21 +62074,6 @@ public final class ContextOuterClass {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_context_EndPoint_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 
@@ -73743,11 +62139,6 @@ public final class ContextOuterClass {
   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_Constraint_descriptor;
   private static final 
@@ -73778,312 +62169,267 @@ public final class ContextOuterClass {
       "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" +
       ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" +
       ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" +
-      "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" +
-      "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" +
-      "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" +
-      "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" +
-      "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" +
-      "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" +
-      "t.TeraFlowController\"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.contex" +
-      "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" +
-      "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" +
-      "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" +
-      "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" +
-      "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" +
-      "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" +
-      "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." +
-      "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" +
-      "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" +
-      "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" +
-      "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" +
-      "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" +
-      "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" +
-      "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" +
-      "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" +
-      "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" +
-      "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" +
-      "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" +
-      ".Uuid\"\371\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" +
-      "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" +
-      "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" +
-      "xt.DeviceConfig\022G\n\031device_operational_st" +
-      "atus\030\005 \001(\0162$.context.DeviceOperationalSt" +
-      "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" +
-      "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" +
-      "\007 \003(\0132\021.context.EndPoint\022%\n\tcomponent\030\010 " +
-      "\003(\0132\022.context.Component\022(\n\rcontroller_id" +
-      "\030\t \001(\0132\021.context.DeviceId\" \n\tComponent\022\023" +
-      "\n\013comp_string\030\001 \003(\t\"9\n\014DeviceConfig\022)\n\014c" +
-      "onfig_rules\030\001 \003(\0132\023.context.ConfigRule\"5" +
-      "\n\014DeviceIdList\022%\n\ndevice_ids\030\001 \003(\0132\021.con" +
-      "text.DeviceId\".\n\nDeviceList\022 \n\007devices\030\001" +
-      " \003(\0132\017.context.Device\"\216\001\n\014DeviceFilter\022)" +
-      "\n\ndevice_ids\030\001 \001(\0132\025.context.DeviceIdLis" +
-      "t\022\031\n\021include_endpoints\030\002 \001(\010\022\034\n\024include_" +
-      "config_rules\030\003 \001(\010\022\032\n\022include_components" +
-      "\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 \001(\0132\016." +
+      "uid\030\001 \001(\0132\r.context.Uuid\"\266\001\n\007Context\022&\n\n" +
+      "context_id\030\001 \001(\0132\022.context.ContextId\022)\n\014" +
+      "topology_ids\030\002 \003(\0132\023.context.TopologyId\022" +
+      "\'\n\013service_ids\030\003 \003(\0132\022.context.ServiceId" +
+      "\022/\n\ncontroller\030\004 \001(\0132\033.context.TeraFlowC" +
+      "ontroller\"8\n\rContextIdList\022\'\n\013context_id" +
+      "s\030\001 \003(\0132\022.context.ContextId\"1\n\013ContextLi" +
+      "st\022\"\n\010contexts\030\001 \003(\0132\020.context.Context\"U" +
+      "\n\014ContextEvent\022\035\n\005event\030\001 \001(\0132\016.context." +
+      "Event\022&\n\ncontext_id\030\002 \001(\0132\022.context.Cont" +
+      "extId\"Z\n\nTopologyId\022&\n\ncontext_id\030\001 \001(\0132" +
+      "\022.context.ContextId\022$\n\rtopology_uuid\030\002 \001" +
+      "(\0132\r.context.Uuid\"~\n\010Topology\022(\n\013topolog" +
+      "y_id\030\001 \001(\0132\023.context.TopologyId\022%\n\ndevic" +
+      "e_ids\030\002 \003(\0132\021.context.DeviceId\022!\n\010link_i" +
+      "ds\030\003 \003(\0132\017.context.LinkId\";\n\016TopologyIdL" +
+      "ist\022)\n\014topology_ids\030\001 \003(\0132\023.context.Topo" +
+      "logyId\"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\013topolog" +
+      "y_id\030\002 \001(\0132\023.context.TopologyId\".\n\010Devic" +
+      "eId\022\"\n\013device_uuid\030\001 \001(\0132\r.context.Uuid\"" +
+      "\232\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.context." +
+      "DeviceId\022\023\n\013device_type\030\002 \001(\t\022,\n\rdevice_" +
+      "config\030\003 \001(\0132\025.context.DeviceConfig\022G\n\031d" +
+      "evice_operational_status\030\004 \001(\0162$.context" +
+      ".DeviceOperationalStatusEnum\0221\n\016device_d" +
+      "rivers\030\005 \003(\0162\031.context.DeviceDriverEnum\022" +
+      "+\n\020device_endpoints\030\006 \003(\0132\021.context.EndP" +
+      "oint\"9\n\014DeviceConfig\022)\n\014config_rules\030\001 \003" +
+      "(\0132\023.context.ConfigRule\"5\n\014DeviceIdList\022" +
+      "%\n\ndevice_ids\030\001 \003(\0132\021.context.DeviceId\"." +
+      "\n\nDeviceList\022 \n\007devices\030\001 \003(\0132\017.context." +
+      "Device\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 \001(\0132\016." +
       "context.Event\022$\n\tdevice_id\030\002 \001(\0132\021.conte" +
       "xt.DeviceId\022,\n\rdevice_config\030\003 \001(\0132\025.con" +
       "text.DeviceConfig\"*\n\006LinkId\022 \n\tlink_uuid" +
-      "\030\001 \001(\0132\r.context.Uuid\"f\n\004Link\022 \n\007link_id" +
-      "\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002 \001(\t\022.\n" +
-      "\021link_endpoint_ids\030\003 \003(\0132\023.context.EndPo" +
-      "intId\"/\n\nLinkIdList\022!\n\010link_ids\030\001 \003(\0132\017." +
-      "context.LinkId\"(\n\010LinkList\022\034\n\005links\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\ncontext_i" +
-      "d\030\001 \001(\0132\022.context.ContextId\022#\n\014service_u" +
-      "uid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007Service\022&\n\n" +
-      "service_id\030\001 \001(\0132\022.context.ServiceId\022\014\n\004" +
-      "name\030\002 \001(\t\022.\n\014service_type\030\003 \001(\0162\030.conte" +
-      "xt.ServiceTypeEnum\0221\n\024service_endpoint_i" +
-      "ds\030\004 \003(\0132\023.context.EndPointId\0220\n\023service" +
-      "_constraints\030\005 \003(\0132\023.context.Constraint\022" +
-      ".\n\016service_status\030\006 \001(\0132\026.context.Servic" +
-      "eStatus\022.\n\016service_config\030\007 \001(\0132\026.contex" +
-      "t.ServiceConfig\022%\n\ttimestamp\030\010 \001(\0132\022.con" +
-      "text.Timestamp\"C\n\rServiceStatus\0222\n\016servi" +
-      "ce_status\030\001 \001(\0162\032.context.ServiceStatusE" +
-      "num\":\n\rServiceConfig\022)\n\014config_rules\030\001 \003" +
-      "(\0132\023.context.ConfigRule\"8\n\rServiceIdList" +
-      "\022\'\n\013service_ids\030\001 \003(\0132\022.context.ServiceI" +
-      "d\"1\n\013ServiceList\022\"\n\010services\030\001 \003(\0132\020.con" +
-      "text.Service\"\225\001\n\rServiceFilter\022+\n\013servic" +
-      "e_ids\030\001 \001(\0132\026.context.ServiceIdList\022\034\n\024i" +
-      "nclude_endpoint_ids\030\002 \001(\010\022\033\n\023include_con" +
-      "straints\030\003 \001(\010\022\034\n\024include_config_rules\030\004" +
-      " \001(\010\"U\n\014ServiceEvent\022\035\n\005event\030\001 \001(\0132\016.co" +
-      "ntext.Event\022&\n\nservice_id\030\002 \001(\0132\022.contex" +
-      "t.ServiceId\"T\n\007SliceId\022&\n\ncontext_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\010slice_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.context.EndP" +
-      "ointId\022.\n\021slice_constraints\030\004 \003(\0132\023.cont" +
-      "ext.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\014slice_sta" +
-      "tus\030\007 \001(\0132\024.context.SliceStatus\022*\n\014slice" +
-      "_config\030\010 \001(\0132\024.context.SliceConfig\022(\n\013s" +
-      "lice_owner\030\t \001(\0132\023.context.SliceOwner\022%\n" +
-      "\ttimestamp\030\n \001(\0132\022.context.Timestamp\"E\n\n" +
-      "SliceOwner\022!\n\nowner_uuid\030\001 \001(\0132\r.context" +
-      ".Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013SliceStat" +
-      "us\022.\n\014slice_status\030\001 \001(\0162\030.context.Slice" +
-      "StatusEnum\"8\n\013SliceConfig\022)\n\014config_rule" +
-      "s\030\001 \003(\0132\023.context.ConfigRule\"2\n\013SliceIdL" +
-      "ist\022#\n\tslice_ids\030\001 \003(\0132\020.context.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(\013" +
-      "2\024.context.SliceIdList\022\034\n\024include_endpoi" +
-      "nt_ids\030\002 \001(\010\022\033\n\023include_constraints\030\003 \001(" +
-      "\010\022\033\n\023include_service_ids\030\004 \001(\010\022\034\n\024includ" +
-      "e_subslice_ids\030\005 \001(\010\022\034\n\024include_config_r" +
-      "ules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005event\030\001 \001(\0132" +
-      "\016.context.Event\022\"\n\010slice_id\030\002 \001(\0132\020.cont" +
-      "ext.SliceId\"6\n\014ConnectionId\022&\n\017connectio" +
-      "n_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025Connectio" +
-      "nSettings_L0\022\031\n\021lsp_symbolic_name\030\001 \001(\t\"" +
-      "\236\001\n\025ConnectionSettings_L2\022\027\n\017src_mac_add" +
-      "ress\030\001 \001(\t\022\027\n\017dst_mac_address\030\002 \001(\t\022\022\n\ne" +
-      "ther_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_class\030\006 \001(\r" +
-      "\"t\n\025ConnectionSettings_L3\022\026\n\016src_ip_addr" +
-      "ess\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001(\t\022\014\n\004dsc" +
-      "p\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003ttl\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_flags\030\003 \001(\r\022\013" +
-      "\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSettings\022*\n\002l0" +
-      "\030\001 \001(\0132\036.context.ConnectionSettings_L0\022*" +
-      "\n\002l2\030\002 \001(\0132\036.context.ConnectionSettings_" +
-      "L2\022*\n\002l3\030\003 \001(\0132\036.context.ConnectionSetti" +
-      "ngs_L3\022*\n\002l4\030\004 \001(\0132\036.context.ConnectionS" +
-      "ettings_L4\"\363\001\n\nConnection\022,\n\rconnection_" +
-      "id\030\001 \001(\0132\025.context.ConnectionId\022&\n\nservi" +
-      "ce_id\030\002 \001(\0132\022.context.ServiceId\0223\n\026path_" +
-      "hops_endpoint_ids\030\003 \003(\0132\023.context.EndPoi" +
-      "ntId\022+\n\017sub_service_ids\030\004 \003(\0132\022.context." +
-      "ServiceId\022-\n\010settings\030\005 \001(\0132\033.context.Co" +
-      "nnectionSettings\"A\n\020ConnectionIdList\022-\n\016" +
-      "connection_ids\030\001 \003(\0132\025.context.Connectio" +
-      "nId\":\n\016ConnectionList\022(\n\013connections\030\001 \003" +
-      "(\0132\023.context.Connection\"^\n\017ConnectionEve" +
-      "nt\022\035\n\005event\030\001 \001(\0132\016.context.Event\022,\n\rcon" +
-      "nection_id\030\002 \001(\0132\025.context.ConnectionId\"" +
-      "\202\001\n\nEndPointId\022(\n\013topology_id\030\001 \001(\0132\023.co" +
-      "ntext.TopologyId\022$\n\tdevice_id\030\002 \001(\0132\021.co" +
-      "ntext.DeviceId\022$\n\rendpoint_uuid\030\003 \001(\0132\r." +
-      "context.Uuid\"\302\001\n\010EndPoint\022(\n\013endpoint_id" +
-      "\030\001 \001(\0132\023.context.EndPointId\022\014\n\004name\030\002 \001(" +
-      "\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020kpi_sample_t" +
-      "ypes\030\004 \003(\0162\037.kpi_sample_types.KpiSampleT" +
-      "ype\022,\n\021endpoint_location\030\005 \001(\0132\021.context" +
-      ".Location\"{\n\014EndPointName\022(\n\013endpoint_id" +
-      "\030\001 \001(\0132\023.context.EndPointId\022\023\n\013device_na" +
-      "me\030\002 \001(\t\022\025\n\rendpoint_name\030\003 \001(\t\022\025\n\rendpo" +
-      "int_type\030\004 \001(\t\";\n\016EndPointIdList\022)\n\014endp" +
-      "oint_ids\030\001 \003(\0132\023.context.EndPointId\"A\n\020E" +
-      "ndPointNameList\022-\n\016endpoint_names\030\001 \003(\0132" +
-      "\025.context.EndPointName\"A\n\021ConfigRule_Cus" +
-      "tom\022\024\n\014resource_key\030\001 \001(\t\022\026\n\016resource_va" +
-      "lue\030\002 \001(\t\"]\n\016ConfigRule_ACL\022(\n\013endpoint_" +
-      "id\030\001 \001(\0132\023.context.EndPointId\022!\n\010rule_se" +
-      "t\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n\nConfigRule\022" +
-      ")\n\006action\030\001 \001(\0162\031.context.ConfigActionEn" +
-      "um\022,\n\006custom\030\002 \001(\0132\032.context.ConfigRule_" +
-      "CustomH\000\022&\n\003acl\030\003 \001(\0132\027.context.ConfigRu" +
-      "le_ACLH\000B\r\n\013config_rule\"F\n\021Constraint_Cu" +
-      "stom\022\027\n\017constraint_type\030\001 \001(\t\022\030\n\020constra" +
-      "int_value\030\002 \001(\t\"E\n\023Constraint_Schedule\022\027" +
-      "\n\017start_timestamp\030\001 \001(\002\022\025\n\rduration_days" +
-      "\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010latitude\030\001 \001(\002" +
-      "\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Location\022\020\n\006regio" +
-      "n\030\001 \001(\tH\000\022-\n\014gps_position\030\002 \001(\0132\025.contex" +
-      "t.GPS_PositionH\000B\n\n\010location\"l\n\033Constrai" +
-      "nt_EndPointLocation\022(\n\013endpoint_id\030\001 \001(\013" +
-      "2\023.context.EndPointId\022#\n\010location\030\002 \001(\0132" +
-      "\021.context.Location\"Y\n\033Constraint_EndPoin" +
-      "tPriority\022(\n\013endpoint_id\030\001 \001(\0132\023.context" +
-      ".EndPointId\022\020\n\010priority\030\002 \001(\r\"0\n\026Constra" +
-      "int_SLA_Latency\022\026\n\016e2e_latency_ms\030\001 \001(\002\"" +
-      "0\n\027Constraint_SLA_Capacity\022\025\n\rcapacity_g" +
-      "bps\030\001 \001(\002\"c\n\033Constraint_SLA_Availability" +
-      "\022\032\n\022num_disjoint_paths\030\001 \001(\r\022\022\n\nall_acti" +
-      "ve\030\002 \001(\010\022\024\n\014availability\030\003 \001(\002\"V\n\036Constr" +
-      "aint_SLA_Isolation_level\0224\n\017isolation_le" +
-      "vel\030\001 \003(\0162\033.context.IsolationLevelEnum\"\242" +
-      "\001\n\025Constraint_Exclusions\022\024\n\014is_permanent" +
-      "\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021.context.Dev" +
-      "iceId\022)\n\014endpoint_ids\030\003 \003(\0132\023.context.En" +
-      "dPointId\022!\n\010link_ids\030\004 \003(\0132\017.context.Lin" +
-      "kId\"\254\004\n\nConstraint\022,\n\006custom\030\001 \001(\0132\032.con" +
-      "text.Constraint_CustomH\000\0220\n\010schedule\030\002 \001" +
-      "(\0132\034.context.Constraint_ScheduleH\000\022A\n\021en" +
-      "dpoint_location\030\003 \001(\0132$.context.Constrai" +
-      "nt_EndPointLocationH\000\022A\n\021endpoint_priori" +
-      "ty\030\004 \001(\0132$.context.Constraint_EndPointPr" +
-      "iorityH\000\0228\n\014sla_capacity\030\005 \001(\0132 .context" +
-      ".Constraint_SLA_CapacityH\000\0226\n\013sla_latenc" +
-      "y\030\006 \001(\0132\037.context.Constraint_SLA_Latency" +
-      "H\000\022@\n\020sla_availability\030\007 \001(\0132$.context.C" +
-      "onstraint_SLA_AvailabilityH\000\022@\n\rsla_isol" +
-      "ation\030\010 \001(\0132\'.context.Constraint_SLA_Iso" +
-      "lation_levelH\000\0224\n\nexclusions\030\t \001(\0132\036.con" +
-      "text.Constraint_ExclusionsH\000B\014\n\nconstrai" +
-      "nt\"^\n\022TeraFlowController\022&\n\ncontext_id\030\001" +
-      " \001(\0132\022.context.ContextId\022\022\n\nip_address\030\002" +
-      " \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024AuthenticationResu" +
-      "lt\022&\n\ncontext_id\030\001 \001(\0132\022.context.Context" +
-      "Id\022\025\n\rauthenticated\030\002 \001(\010*j\n\rEventTypeEn" +
-      "um\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVENTTYPE" +
-      "_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n\020EVENT" +
-      "TYPE_REMOVE\020\003*\367\001\n\020DeviceDriverEnum\022\032\n\026DE" +
-      "VICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDRIVER_O" +
-      "PENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSPORT_AP" +
-      "I\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICEDRIVER" +
-      "_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICEDRIVER" +
-      "_ONF_TR_352\020\005\022\023\n\017DEVICEDRIVER_XR\020\006\022\033\n\027DE" +
-      "VICEDRIVER_IETF_L2VPN\020\007*\217\001\n\033DeviceOperat" +
-      "ionalStatusEnum\022%\n!DEVICEOPERATIONALSTAT" +
-      "US_UNDEFINED\020\000\022$\n DEVICEOPERATIONALSTATU" +
-      "S_DISABLED\020\001\022#\n\037DEVICEOPERATIONALSTATUS_" +
-      "ENABLED\020\002*\201\001\n\017ServiceTypeEnum\022\027\n\023SERVICE" +
-      "TYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020" +
-      "SERVICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_C" +
-      "ONNECTIVITY_SERVICE\020\003*\304\001\n\021ServiceStatusE" +
-      "num\022\033\n\027SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERV" +
-      "ICESTATUS_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACT" +
-      "IVE\020\002\022\032\n\026SERVICESTATUS_UPDATING\020\003\022!\n\035SER" +
-      "VICESTATUS_PENDING_REMOVAL\020\004\022\036\n\032SERVICES" +
-      "TATUS_SLA_VIOLATED\020\005*\251\001\n\017SliceStatusEnum" +
-      "\022\031\n\025SLICESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTAT" +
-      "US_PLANNED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SL" +
-      "ICESTATUS_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT" +
-      "\020\004\022\034\n\030SLICESTATUS_SLA_VIOLATED\020\005*]\n\020Conf" +
-      "igActionEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000" +
-      "\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023CONFIGACTION_D" +
-      "ELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISO" +
-      "LATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGI" +
-      "CAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035" +
-      "\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICA" +
-      "L_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURC" +
-      "E_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLA" +
-      "TION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\245\026\n\016Contex" +
-      "tService\022:\n\016ListContextIds\022\016.context.Emp" +
-      "ty\032\026.context.ContextIdList\"\000\0226\n\014ListCont" +
-      "exts\022\016.context.Empty\032\024.context.ContextLi" +
-      "st\"\000\0224\n\nGetContext\022\022.context.ContextId\032\020" +
-      ".context.Context\"\000\0224\n\nSetContext\022\020.conte" +
-      "xt.Context\032\022.context.ContextId\"\000\0225\n\rRemo" +
-      "veContext\022\022.context.ContextId\032\016.context." +
-      "Empty\"\000\022=\n\020GetContextEvents\022\016.context.Em" +
-      "pty\032\025.context.ContextEvent\"\0000\001\022@\n\017ListTo" +
-      "pologyIds\022\022.context.ContextId\032\027.context." +
-      "TopologyIdList\"\000\022=\n\016ListTopologies\022\022.con" +
-      "text.ContextId\032\025.context.TopologyList\"\000\022" +
-      "7\n\013GetTopology\022\023.context.TopologyId\032\021.co" +
-      "ntext.Topology\"\000\022E\n\022GetTopologyDetails\022\023" +
-      ".context.TopologyId\032\030.context.TopologyDe" +
-      "tails\"\000\0227\n\013SetTopology\022\021.context.Topolog" +
-      "y\032\023.context.TopologyId\"\000\0227\n\016RemoveTopolo" +
-      "gy\022\023.context.TopologyId\032\016.context.Empty\"" +
-      "\000\022?\n\021GetTopologyEvents\022\016.context.Empty\032\026" +
-      ".context.TopologyEvent\"\0000\001\0228\n\rListDevice" +
-      "Ids\022\016.context.Empty\032\025.context.DeviceIdLi" +
-      "st\"\000\0224\n\013ListDevices\022\016.context.Empty\032\023.co" +
-      "ntext.DeviceList\"\000\0221\n\tGetDevice\022\021.contex" +
-      "t.DeviceId\032\017.context.Device\"\000\0221\n\tSetDevi" +
-      "ce\022\017.context.Device\032\021.context.DeviceId\"\000" +
-      "\0223\n\014RemoveDevice\022\021.context.DeviceId\032\016.co" +
-      "ntext.Empty\"\000\022;\n\017GetDeviceEvents\022\016.conte" +
-      "xt.Empty\032\024.context.DeviceEvent\"\0000\001\022<\n\014Se" +
-      "lectDevice\022\025.context.DeviceFilter\032\023.cont" +
-      "ext.DeviceList\"\000\022I\n\021ListEndPointNames\022\027." +
-      "context.EndPointIdList\032\031.context.EndPoin" +
-      "tNameList\"\000\0224\n\013ListLinkIds\022\016.context.Emp" +
-      "ty\032\023.context.LinkIdList\"\000\0220\n\tListLinks\022\016" +
-      ".context.Empty\032\021.context.LinkList\"\000\022+\n\007G" +
-      "etLink\022\017.context.LinkId\032\r.context.Link\"\000" +
-      "\022+\n\007SetLink\022\r.context.Link\032\017.context.Lin" +
-      "kId\"\000\022/\n\nRemoveLink\022\017.context.LinkId\032\016.c" +
-      "ontext.Empty\"\000\0227\n\rGetLinkEvents\022\016.contex" +
-      "t.Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016ListS" +
-      "erviceIds\022\022.context.ContextId\032\026.context." +
-      "ServiceIdList\"\000\022:\n\014ListServices\022\022.contex" +
-      "t.ContextId\032\024.context.ServiceList\"\000\0224\n\nG" +
-      "etService\022\022.context.ServiceId\032\020.context." +
-      "Service\"\000\0224\n\nSetService\022\020.context.Servic" +
-      "e\032\022.context.ServiceId\"\000\0226\n\014UnsetService\022" +
-      "\020.context.Service\032\022.context.ServiceId\"\000\022" +
-      "5\n\rRemoveService\022\022.context.ServiceId\032\016.c" +
-      "ontext.Empty\"\000\022=\n\020GetServiceEvents\022\016.con" +
-      "text.Empty\032\025.context.ServiceEvent\"\0000\001\022?\n" +
-      "\rSelectService\022\026.context.ServiceFilter\032\024" +
-      ".context.ServiceList\"\000\022:\n\014ListSliceIds\022\022" +
-      ".context.ContextId\032\024.context.SliceIdList" +
-      "\"\000\0226\n\nListSlices\022\022.context.ContextId\032\022.c" +
-      "ontext.SliceList\"\000\022.\n\010GetSlice\022\020.context" +
-      ".SliceId\032\016.context.Slice\"\000\022.\n\010SetSlice\022\016" +
-      ".context.Slice\032\020.context.SliceId\"\000\0220\n\nUn" +
-      "setSlice\022\016.context.Slice\032\020.context.Slice" +
-      "Id\"\000\0221\n\013RemoveSlice\022\020.context.SliceId\032\016." +
-      "context.Empty\"\000\0229\n\016GetSliceEvents\022\016.cont" +
-      "ext.Empty\032\023.context.SliceEvent\"\0000\001\0229\n\013Se" +
-      "lectSlice\022\024.context.SliceFilter\032\022.contex" +
-      "t.SliceList\"\000\022D\n\021ListConnectionIds\022\022.con" +
-      "text.ServiceId\032\031.context.ConnectionIdLis" +
-      "t\"\000\022@\n\017ListConnections\022\022.context.Service" +
-      "Id\032\027.context.ConnectionList\"\000\022=\n\rGetConn" +
-      "ection\022\025.context.ConnectionId\032\023.context." +
-      "Connection\"\000\022=\n\rSetConnection\022\023.context." +
-      "Connection\032\025.context.ConnectionId\"\000\022;\n\020R" +
-      "emoveConnection\022\025.context.ConnectionId\032\016" +
-      ".context.Empty\"\000\022C\n\023GetConnectionEvents\022" +
-      "\016.context.Empty\032\030.context.ConnectionEven" +
-      "t\"\0000\001b\006proto3"
+      "\030\001 \001(\0132\r.context.Uuid\"X\n\004Link\022 \n\007link_id" +
+      "\030\001 \001(\0132\017.context.LinkId\022.\n\021link_endpoint" +
+      "_ids\030\002 \003(\0132\023.context.EndPointId\"/\n\nLinkI" +
+      "dList\022!\n\010link_ids\030\001 \003(\0132\017.context.LinkId" +
+      "\"(\n\010LinkList\022\034\n\005links\030\001 \003(\0132\r.context.Li" +
+      "nk\"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\ncontext_id\030\001 \001(\0132\022.cont" +
+      "ext.ContextId\022#\n\014service_uuid\030\002 \001(\0132\r.co" +
+      "ntext.Uuid\"\315\002\n\007Service\022&\n\nservice_id\030\001 \001" +
+      "(\0132\022.context.ServiceId\022.\n\014service_type\030\002" +
+      " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" +
+      "e_endpoint_ids\030\003 \003(\0132\023.context.EndPointI" +
+      "d\0220\n\023service_constraints\030\004 \003(\0132\023.context" +
+      ".Constraint\022.\n\016service_status\030\005 \001(\0132\026.co" +
+      "ntext.ServiceStatus\022.\n\016service_config\030\006 " +
+      "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" +
+      "\030\007 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" +
+      "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" +
+      "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" +
+      "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" +
+      "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" +
+      "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" +
+      "\030\001 \003(\0132\020.context.Service\"U\n\014ServiceEvent" +
+      "\022\035\n\005event\030\001 \001(\0132\016.context.Event\022&\n\nservi" +
+      "ce_id\030\002 \001(\0132\022.context.ServiceId\"T\n\007Slice" +
+      "Id\022&\n\ncontext_id\030\001 \001(\0132\022.context.Context" +
+      "Id\022!\n\nslice_uuid\030\002 \001(\0132\r.context.Uuid\"\222\003" +
+      "\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.context.Slic" +
+      "eId\022/\n\022slice_endpoint_ids\030\002 \003(\0132\023.contex" +
+      "t.EndPointId\022.\n\021slice_constraints\030\003 \003(\0132" +
+      "\023.context.Constraint\022-\n\021slice_service_id" +
+      "s\030\004 \003(\0132\022.context.ServiceId\022,\n\022slice_sub" +
+      "slice_ids\030\005 \003(\0132\020.context.SliceId\022*\n\014sli" +
+      "ce_status\030\006 \001(\0132\024.context.SliceStatus\022*\n" +
+      "\014slice_config\030\007 \001(\0132\024.context.SliceConfi" +
+      "g\022(\n\013slice_owner\030\010 \001(\0132\023.context.SliceOw" +
+      "ner\022%\n\ttimestamp\030\t \001(\0132\022.context.Timesta" +
+      "mp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(\0132\r.c" +
+      "ontext.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013Sli" +
+      "ceStatus\022.\n\014slice_status\030\001 \001(\0162\030.context" +
+      ".SliceStatusEnum\"8\n\013SliceConfig\022)\n\014confi" +
+      "g_rules\030\001 \003(\0132\023.context.ConfigRule\"2\n\013Sl" +
+      "iceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.context.S" +
+      "liceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016.co" +
+      "ntext.Slice\"O\n\nSliceEvent\022\035\n\005event\030\001 \001(\013" +
+      "2\016.context.Event\022\"\n\010slice_id\030\002 \001(\0132\020.con" +
+      "text.SliceId\"6\n\014ConnectionId\022&\n\017connecti" +
+      "on_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025Connecti" +
+      "onSettings_L0\022\031\n\021lsp_symbolic_name\030\001 \001(\t" +
+      "\"\236\001\n\025ConnectionSettings_L2\022\027\n\017src_mac_ad" +
+      "dress\030\001 \001(\t\022\027\n\017dst_mac_address\030\002 \001(\t\022\022\n\n" +
+      "ether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 \001(\r\022\022\n\nmpl" +
+      "s_label\030\005 \001(\r\022\032\n\022mpls_traffic_class\030\006 \001(" +
+      "\r\"t\n\025ConnectionSettings_L3\022\026\n\016src_ip_add" +
+      "ress\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001(\t\022\014\n\004ds" +
+      "cp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003ttl\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_flags\030\003 \001(\r\022" +
+      "\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSettings\022*\n\002l" +
+      "0\030\001 \001(\0132\036.context.ConnectionSettings_L0\022" +
+      "*\n\002l2\030\002 \001(\0132\036.context.ConnectionSettings" +
+      "_L2\022*\n\002l3\030\003 \001(\0132\036.context.ConnectionSett" +
+      "ings_L3\022*\n\002l4\030\004 \001(\0132\036.context.Connection" +
+      "Settings_L4\"\363\001\n\nConnection\022,\n\rconnection" +
+      "_id\030\001 \001(\0132\025.context.ConnectionId\022&\n\nserv" +
+      "ice_id\030\002 \001(\0132\022.context.ServiceId\0223\n\026path" +
+      "_hops_endpoint_ids\030\003 \003(\0132\023.context.EndPo" +
+      "intId\022+\n\017sub_service_ids\030\004 \003(\0132\022.context" +
+      ".ServiceId\022-\n\010settings\030\005 \001(\0132\033.context.C" +
+      "onnectionSettings\"A\n\020ConnectionIdList\022-\n" +
+      "\016connection_ids\030\001 \003(\0132\025.context.Connecti" +
+      "onId\":\n\016ConnectionList\022(\n\013connections\030\001 " +
+      "\003(\0132\023.context.Connection\"^\n\017ConnectionEv" +
+      "ent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022,\n\rco" +
+      "nnection_id\030\002 \001(\0132\025.context.ConnectionId" +
+      "\"\202\001\n\nEndPointId\022(\n\013topology_id\030\001 \001(\0132\023.c" +
+      "ontext.TopologyId\022$\n\tdevice_id\030\002 \001(\0132\021.c" +
+      "ontext.DeviceId\022$\n\rendpoint_uuid\030\003 \001(\0132\r" +
+      ".context.Uuid\"\264\001\n\010EndPoint\022(\n\013endpoint_i" +
+      "d\030\001 \001(\0132\023.context.EndPointId\022\025\n\rendpoint" +
+      "_type\030\002 \001(\t\0229\n\020kpi_sample_types\030\003 \003(\0162\037." +
+      "kpi_sample_types.KpiSampleType\022,\n\021endpoi" +
+      "nt_location\030\004 \001(\0132\021.context.Location\"A\n\021" +
+      "ConfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022" +
+      "\026\n\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_AC" +
+      "L\022(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPoin" +
+      "tId\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234" +
+      "\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context." +
+      "ConfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.conte" +
+      "xt.ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.co" +
+      "ntext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n" +
+      "\021Constraint_Custom\022\027\n\017constraint_type\030\001 " +
+      "\001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constra" +
+      "int_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n" +
+      "\rduration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010" +
+      "latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Loc" +
+      "ation\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030" +
+      "\002 \001(\0132\025.context.GPS_PositionH\000B\n\n\010locati" +
+      "on\"l\n\033Constraint_EndPointLocation\022(\n\013end" +
+      "point_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010l" +
+      "ocation\030\002 \001(\0132\021.context.Location\"Y\n\033Cons" +
+      "traint_EndPointPriority\022(\n\013endpoint_id\030\001" +
+      " \001(\0132\023.context.EndPointId\022\020\n\010priority\030\002 " +
+      "\001(\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_lat" +
+      "ency_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity" +
+      "\022\025\n\rcapacity_gbps\030\001 \001(\002\"M\n\033Constraint_SL" +
+      "A_Availability\022\032\n\022num_disjoint_paths\030\001 \001" +
+      "(\r\022\022\n\nall_active\030\002 \001(\010\"V\n\036Constraint_SLA" +
+      "_Isolation_level\0224\n\017isolation_level\030\001 \003(" +
+      "\0162\033.context.IsolationLevelEnum\"\366\003\n\nConst" +
+      "raint\022,\n\006custom\030\001 \001(\0132\032.context.Constrai" +
+      "nt_CustomH\000\0220\n\010schedule\030\002 \001(\0132\034.context." +
+      "Constraint_ScheduleH\000\022A\n\021endpoint_locati" +
+      "on\030\003 \001(\0132$.context.Constraint_EndPointLo" +
+      "cationH\000\022A\n\021endpoint_priority\030\004 \001(\0132$.co" +
+      "ntext.Constraint_EndPointPriorityH\000\0228\n\014s" +
+      "la_capacity\030\005 \001(\0132 .context.Constraint_S" +
+      "LA_CapacityH\000\0226\n\013sla_latency\030\006 \001(\0132\037.con" +
+      "text.Constraint_SLA_LatencyH\000\022@\n\020sla_ava" +
+      "ilability\030\007 \001(\0132$.context.Constraint_SLA" +
+      "_AvailabilityH\000\022@\n\rsla_isolation\030\010 \001(\0132\'" +
+      ".context.Constraint_SLA_Isolation_levelH" +
+      "\000B\014\n\nconstraint\"^\n\022TeraFlowController\022&\n" +
+      "\ncontext_id\030\001 \001(\0132\022.context.ContextId\022\022\n" +
+      "\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authe" +
+      "nticationResult\022&\n\ncontext_id\030\001 \001(\0132\022.co" +
+      "ntext.ContextId\022\025\n\rauthenticated\030\002 \001(\010*j" +
+      "\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000" +
+      "\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDA" +
+      "TE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\332\001\n\020DeviceDri" +
+      "verEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027D" +
+      "EVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER" +
+      "_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n" +
+      "\"DEVICEDRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n" +
+      "\027DEVICEDRIVER_ONF_TR_352\020\005\022\023\n\017DEVICEDRIV" +
+      "ER_XR\020\006*\217\001\n\033DeviceOperationalStatusEnum\022" +
+      "%\n!DEVICEOPERATIONALSTATUS_UNDEFINED\020\000\022$" +
+      "\n DEVICEOPERATIONALSTATUS_DISABLED\020\001\022#\n\037" +
+      "DEVICEOPERATIONALSTATUS_ENABLED\020\002*\201\001\n\017Se" +
+      "rviceTypeEnum\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024" +
+      "\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM" +
+      "\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY_SERV" +
+      "ICE\020\003*\250\001\n\021ServiceStatusEnum\022\033\n\027SERVICEST" +
+      "ATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_PLANNE" +
+      "D\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022!\n\035SERVICE" +
+      "STATUS_PENDING_REMOVAL\020\003\022\036\n\032SERVICESTATU" +
+      "S_SLA_VIOLATED\020\004*\251\001\n\017SliceStatusEnum\022\031\n\025" +
+      "SLICESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_P" +
+      "LANNED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICES" +
+      "TATUS_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034" +
+      "\n\030SLICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigAc" +
+      "tionEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020" +
+      "CONFIGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELET" +
+      "E\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISOLATI" +
+      "ON\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGICAL_" +
+      "ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PH" +
+      "YSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICAL_NE" +
+      "TWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURCE_IS" +
+      "OLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLATION" +
+      "\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\331\023\n\016ContextSer" +
+      "vice\022:\n\016ListContextIds\022\016.context.Empty\032\026" +
+      ".context.ContextIdList\"\000\0226\n\014ListContexts" +
+      "\022\016.context.Empty\032\024.context.ContextList\"\000" +
+      "\0224\n\nGetContext\022\022.context.ContextId\032\020.con" +
+      "text.Context\"\000\0224\n\nSetContext\022\020.context.C" +
+      "ontext\032\022.context.ContextId\"\000\0225\n\rRemoveCo" +
+      "ntext\022\022.context.ContextId\032\016.context.Empt" +
+      "y\"\000\022=\n\020GetContextEvents\022\016.context.Empty\032" +
+      "\025.context.ContextEvent\"\0000\001\022@\n\017ListTopolo" +
+      "gyIds\022\022.context.ContextId\032\027.context.Topo" +
+      "logyIdList\"\000\022=\n\016ListTopologies\022\022.context" +
+      ".ContextId\032\025.context.TopologyList\"\000\0227\n\013G" +
+      "etTopology\022\023.context.TopologyId\032\021.contex" +
+      "t.Topology\"\000\0227\n\013SetTopology\022\021.context.To" +
+      "pology\032\023.context.TopologyId\"\000\0227\n\016RemoveT" +
+      "opology\022\023.context.TopologyId\032\016.context.E" +
+      "mpty\"\000\022?\n\021GetTopologyEvents\022\016.context.Em" +
+      "pty\032\026.context.TopologyEvent\"\0000\001\0228\n\rListD" +
+      "eviceIds\022\016.context.Empty\032\025.context.Devic" +
+      "eIdList\"\000\0224\n\013ListDevices\022\016.context.Empty" +
+      "\032\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021.c" +
+      "ontext.DeviceId\032\017.context.Device\"\000\0221\n\tSe" +
+      "tDevice\022\017.context.Device\032\021.context.Devic" +
+      "eId\"\000\0223\n\014RemoveDevice\022\021.context.DeviceId" +
+      "\032\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022\016." +
+      "context.Empty\032\024.context.DeviceEvent\"\0000\001\022" +
+      "4\n\013ListLinkIds\022\016.context.Empty\032\023.context" +
+      ".LinkIdList\"\000\0220\n\tListLinks\022\016.context.Emp" +
+      "ty\032\021.context.LinkList\"\000\022+\n\007GetLink\022\017.con" +
+      "text.LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022" +
+      "\r.context.Link\032\017.context.LinkId\"\000\022/\n\nRem" +
+      "oveLink\022\017.context.LinkId\032\016.context.Empty" +
+      "\"\000\0227\n\rGetLinkEvents\022\016.context.Empty\032\022.co" +
+      "ntext.LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022." +
+      "context.ContextId\032\026.context.ServiceIdLis" +
+      "t\"\000\022:\n\014ListServices\022\022.context.ContextId\032" +
+      "\024.context.ServiceList\"\000\0224\n\nGetService\022\022." +
+      "context.ServiceId\032\020.context.Service\"\000\0224\n" +
+      "\nSetService\022\020.context.Service\032\022.context." +
+      "ServiceId\"\000\0226\n\014UnsetService\022\020.context.Se" +
+      "rvice\032\022.context.ServiceId\"\000\0225\n\rRemoveSer" +
+      "vice\022\022.context.ServiceId\032\016.context.Empty" +
+      "\"\000\022=\n\020GetServiceEvents\022\016.context.Empty\032\025" +
+      ".context.ServiceEvent\"\0000\001\022:\n\014ListSliceId" +
+      "s\022\022.context.ContextId\032\024.context.SliceIdL" +
+      "ist\"\000\0226\n\nListSlices\022\022.context.ContextId\032" +
+      "\022.context.SliceList\"\000\022.\n\010GetSlice\022\020.cont" +
+      "ext.SliceId\032\016.context.Slice\"\000\022.\n\010SetSlic" +
+      "e\022\016.context.Slice\032\020.context.SliceId\"\000\0220\n" +
+      "\nUnsetSlice\022\016.context.Slice\032\020.context.Sl" +
+      "iceId\"\000\0221\n\013RemoveSlice\022\020.context.SliceId" +
+      "\032\016.context.Empty\"\000\0229\n\016GetSliceEvents\022\016.c" +
+      "ontext.Empty\032\023.context.SliceEvent\"\0000\001\022D\n" +
+      "\021ListConnectionIds\022\022.context.ServiceId\032\031" +
+      ".context.ConnectionIdList\"\000\022@\n\017ListConne" +
+      "ctions\022\022.context.ServiceId\032\027.context.Con" +
+      "nectionList\"\000\022=\n\rGetConnection\022\025.context" +
+      ".ConnectionId\032\023.context.Connection\"\000\022=\n\r" +
+      "SetConnection\022\023.context.Connection\032\025.con" +
+      "text.ConnectionId\"\000\022;\n\020RemoveConnection\022" +
+      "\025.context.ConnectionId\032\016.context.Empty\"\000" +
+      "\022C\n\023GetConnectionEvents\022\016.context.Empty\032" +
+      "\030.context.ConnectionEvent\"\0000\001b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -74126,7 +62472,7 @@ public final class ContextOuterClass {
     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", });
+        new java.lang.String[] { "ContextId", "TopologyIds", "ServiceIds", "Controller", });
     internal_static_context_ContextIdList_descriptor =
       getDescriptor().getMessageTypes().get(6);
     internal_static_context_ContextIdList_fieldAccessorTable = new
@@ -74156,399 +62502,345 @@ public final class ContextOuterClass {
     internal_static_context_Topology_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Topology_descriptor,
-        new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds", });
-    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", });
+        new java.lang.String[] { "TopologyId", "DeviceIds", "LinkIds", });
     internal_static_context_TopologyIdList_descriptor =
-      getDescriptor().getMessageTypes().get(12);
+      getDescriptor().getMessageTypes().get(11);
     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);
+      getDescriptor().getMessageTypes().get(12);
     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);
+      getDescriptor().getMessageTypes().get(13);
     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);
+      getDescriptor().getMessageTypes().get(14);
     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);
+      getDescriptor().getMessageTypes().get(15);
     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", "Component", "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[] { "CompString", });
+        new java.lang.String[] { "DeviceId", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", });
     internal_static_context_DeviceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(16);
     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);
+      getDescriptor().getMessageTypes().get(17);
     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);
+      getDescriptor().getMessageTypes().get(18);
     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);
+      getDescriptor().getMessageTypes().get(19);
     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);
+      getDescriptor().getMessageTypes().get(20);
     internal_static_context_LinkId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkId_descriptor,
         new java.lang.String[] { "LinkUuid", });
     internal_static_context_Link_descriptor =
-      getDescriptor().getMessageTypes().get(24);
+      getDescriptor().getMessageTypes().get(21);
     internal_static_context_Link_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Link_descriptor,
-        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", });
+        new java.lang.String[] { "LinkId", "LinkEndpointIds", });
     internal_static_context_LinkIdList_descriptor =
-      getDescriptor().getMessageTypes().get(25);
+      getDescriptor().getMessageTypes().get(22);
     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(26);
+      getDescriptor().getMessageTypes().get(23);
     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(27);
+      getDescriptor().getMessageTypes().get(24);
     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(28);
+      getDescriptor().getMessageTypes().get(25);
     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(29);
+      getDescriptor().getMessageTypes().get(26);
     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", });
+        new java.lang.String[] { "ServiceId", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp", });
     internal_static_context_ServiceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(30);
+      getDescriptor().getMessageTypes().get(27);
     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(31);
+      getDescriptor().getMessageTypes().get(28);
     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(32);
+      getDescriptor().getMessageTypes().get(29);
     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(33);
+      getDescriptor().getMessageTypes().get(30);
     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(34);
-    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(35);
+      getDescriptor().getMessageTypes().get(31);
     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(36);
+      getDescriptor().getMessageTypes().get(32);
     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(37);
+      getDescriptor().getMessageTypes().get(33);
     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", });
+        new java.lang.String[] { "SliceId", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp", });
     internal_static_context_SliceOwner_descriptor =
-      getDescriptor().getMessageTypes().get(38);
+      getDescriptor().getMessageTypes().get(34);
     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(39);
+      getDescriptor().getMessageTypes().get(35);
     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(40);
+      getDescriptor().getMessageTypes().get(36);
     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(41);
+      getDescriptor().getMessageTypes().get(37);
     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(42);
+      getDescriptor().getMessageTypes().get(38);
     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(43);
-    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(44);
+      getDescriptor().getMessageTypes().get(39);
     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(45);
+      getDescriptor().getMessageTypes().get(40);
     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(46);
+      getDescriptor().getMessageTypes().get(41);
     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(47);
+      getDescriptor().getMessageTypes().get(42);
     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(48);
+      getDescriptor().getMessageTypes().get(43);
     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(49);
+      getDescriptor().getMessageTypes().get(44);
     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(50);
+      getDescriptor().getMessageTypes().get(45);
     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(51);
+      getDescriptor().getMessageTypes().get(46);
     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(52);
+      getDescriptor().getMessageTypes().get(47);
     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(53);
+      getDescriptor().getMessageTypes().get(48);
     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(54);
+      getDescriptor().getMessageTypes().get(49);
     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(55);
+      getDescriptor().getMessageTypes().get(50);
     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(56);
+      getDescriptor().getMessageTypes().get(51);
     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", });
-    internal_static_context_EndPointName_descriptor =
-      getDescriptor().getMessageTypes().get(57);
-    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(58);
-    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(59);
-    internal_static_context_EndPointNameList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_EndPointNameList_descriptor,
-        new java.lang.String[] { "EndpointNames", });
+        new java.lang.String[] { "EndpointId", "EndpointType", "KpiSampleTypes", "EndpointLocation", });
     internal_static_context_ConfigRule_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(60);
+      getDescriptor().getMessageTypes().get(52);
     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(61);
+      getDescriptor().getMessageTypes().get(53);
     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(62);
+      getDescriptor().getMessageTypes().get(54);
     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(63);
+      getDescriptor().getMessageTypes().get(55);
     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(64);
+      getDescriptor().getMessageTypes().get(56);
     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(65);
+      getDescriptor().getMessageTypes().get(57);
     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(66);
+      getDescriptor().getMessageTypes().get(58);
     internal_static_context_Location_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Location_descriptor,
         new java.lang.String[] { "Region", "GpsPosition", "Location", });
     internal_static_context_Constraint_EndPointLocation_descriptor =
-      getDescriptor().getMessageTypes().get(67);
+      getDescriptor().getMessageTypes().get(59);
     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(68);
+      getDescriptor().getMessageTypes().get(60);
     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(69);
+      getDescriptor().getMessageTypes().get(61);
     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(70);
+      getDescriptor().getMessageTypes().get(62);
     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(71);
+      getDescriptor().getMessageTypes().get(63);
     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", });
+        new java.lang.String[] { "NumDisjointPaths", "AllActive", });
     internal_static_context_Constraint_SLA_Isolation_level_descriptor =
-      getDescriptor().getMessageTypes().get(72);
+      getDescriptor().getMessageTypes().get(64);
     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(73);
-    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_Constraint_descriptor =
-      getDescriptor().getMessageTypes().get(74);
+      getDescriptor().getMessageTypes().get(65);
     internal_static_context_Constraint_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_descriptor,
-        new java.lang.String[] { "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint", });
+        new java.lang.String[] { "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Constraint", });
     internal_static_context_TeraFlowController_descriptor =
-      getDescriptor().getMessageTypes().get(75);
+      getDescriptor().getMessageTypes().get(66);
     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(76);
+      getDescriptor().getMessageTypes().get(67);
     internal_static_context_AuthenticationResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_AuthenticationResult_descriptor,
diff --git a/src/policy/target/generated-sources/grpc/context/ContextService.java b/src/policy/target/generated-sources/grpc/context/ContextService.java
index b356bac75e24f5f412c51de5450d284ea340ce12..814ea98b65370f8fd3ffd752c77bec04997a5dd6 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextService.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextService.java
@@ -24,8 +24,6 @@ public interface ContextService extends MutinyService {
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request);
-    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request);
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request);
@@ -40,10 +38,6 @@ public interface ContextService extends MutinyService {
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request);
-    
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request);
-    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request);
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request);
@@ -66,8 +60,6 @@ public interface ContextService extends MutinyService {
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request);
-    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request);
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request);
@@ -80,8 +72,6 @@ public interface ContextService extends MutinyService {
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request);
-    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request);
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request);
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java b/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java
index 45a7959c4425a981fcbdaba6b06c22cd2fe769ac..2b0099f106265e34d1f60bb3e0ecdc35f81895ee 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java
@@ -80,14 +80,6 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-       try {
-         return delegate.getTopologyDetails(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
        try {
          return delegate.setTopology(request);
@@ -144,22 +136,6 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-       try {
-         return delegate.selectDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-       try {
-         return delegate.listEndPointNames(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
        try {
          return delegate.listLinkIds(request);
@@ -248,14 +224,6 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-       try {
-         return delegate.selectService(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
        try {
          return delegate.listSliceIds(request);
@@ -304,14 +272,6 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-       try {
-         return delegate.selectSlice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
        try {
          return delegate.listConnectionIds(request);
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java b/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java
index 0b0e9f83f74d1ce33ba6d609544dabb590024758..c518a0b4622522728e0eb22fdbeb80442b10f7ef 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java
@@ -53,10 +53,6 @@ public class ContextServiceClient implements ContextService, MutinyClient<Mutiny
        return stub.getTopology(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-       return stub.getTopologyDetails(request);
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
        return stub.setTopology(request);
     }
@@ -85,14 +81,6 @@ public class ContextServiceClient implements ContextService, MutinyClient<Mutiny
        return stub.removeDevice(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-       return stub.selectDevice(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-       return stub.listEndPointNames(request);
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
        return stub.listLinkIds(request);
     }
@@ -137,10 +125,6 @@ public class ContextServiceClient implements ContextService, MutinyClient<Mutiny
        return stub.removeService(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-       return stub.selectService(request);
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
        return stub.listSliceIds(request);
     }
@@ -165,10 +149,6 @@ public class ContextServiceClient implements ContextService, MutinyClient<Mutiny
        return stub.removeSlice(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-       return stub.selectSlice(request);
-    }
-    @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
        return stub.listConnectionIds(request);
     }
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
index 27c73f5424bcf2d6739b5884f4946ced1515398c..f59378086c84d0776cc25fb7aa9640403b072c0f 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
@@ -293,37 +293,6 @@ public final class ContextServiceGrpc {
     return getGetTopologyMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetTopologyDetails",
-      requestType = context.ContextOuterClass.TopologyId.class,
-      responseType = context.ContextOuterClass.TopologyDetails.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod;
-    if ((getGetTopologyDetailsMethod = ContextServiceGrpc.getGetTopologyDetailsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetTopologyDetailsMethod = ContextServiceGrpc.getGetTopologyDetailsMethod) == null) {
-          ContextServiceGrpc.getGetTopologyDetailsMethod = getGetTopologyDetailsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopologyDetails"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyDetails.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopologyDetails"))
-              .build();
-        }
-      }
-    }
-    return getGetTopologyDetailsMethod;
-  }
-
   private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Topology,
       context.ContextOuterClass.TopologyId> getSetTopologyMethod;
 
@@ -603,68 +572,6 @@ public final class ContextServiceGrpc {
     return getGetDeviceEventsMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter,
-      context.ContextOuterClass.DeviceList> getSelectDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SelectDevice",
-      requestType = context.ContextOuterClass.DeviceFilter.class,
-      responseType = context.ContextOuterClass.DeviceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter,
-      context.ContextOuterClass.DeviceList> getSelectDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList> getSelectDeviceMethod;
-    if ((getSelectDeviceMethod = ContextServiceGrpc.getSelectDeviceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSelectDeviceMethod = ContextServiceGrpc.getSelectDeviceMethod) == null) {
-          ContextServiceGrpc.getSelectDeviceMethod = getSelectDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceFilter.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectDevice"))
-              .build();
-        }
-      }
-    }
-    return getSelectDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList,
-      context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListEndPointNames",
-      requestType = context.ContextOuterClass.EndPointIdList.class,
-      responseType = context.ContextOuterClass.EndPointNameList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList,
-      context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod;
-    if ((getListEndPointNamesMethod = ContextServiceGrpc.getListEndPointNamesMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListEndPointNamesMethod = ContextServiceGrpc.getListEndPointNamesMethod) == null) {
-          ContextServiceGrpc.getListEndPointNamesMethod = getListEndPointNamesMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListEndPointNames"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.EndPointIdList.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.EndPointNameList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListEndPointNames"))
-              .build();
-        }
-      }
-    }
-    return getListEndPointNamesMethod;
-  }
-
   private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
       context.ContextOuterClass.LinkIdList> getListLinkIdsMethod;
 
@@ -1068,37 +975,6 @@ public final class ContextServiceGrpc {
     return getGetServiceEventsMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter,
-      context.ContextOuterClass.ServiceList> getSelectServiceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SelectService",
-      requestType = context.ContextOuterClass.ServiceFilter.class,
-      responseType = context.ContextOuterClass.ServiceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter,
-      context.ContextOuterClass.ServiceList> getSelectServiceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList> getSelectServiceMethod;
-    if ((getSelectServiceMethod = ContextServiceGrpc.getSelectServiceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSelectServiceMethod = ContextServiceGrpc.getSelectServiceMethod) == null) {
-          ContextServiceGrpc.getSelectServiceMethod = getSelectServiceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectService"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceFilter.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectService"))
-              .build();
-        }
-      }
-    }
-    return getSelectServiceMethod;
-  }
-
   private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
       context.ContextOuterClass.SliceIdList> getListSliceIdsMethod;
 
@@ -1316,37 +1192,6 @@ public final class ContextServiceGrpc {
     return getGetSliceEventsMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter,
-      context.ContextOuterClass.SliceList> getSelectSliceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SelectSlice",
-      requestType = context.ContextOuterClass.SliceFilter.class,
-      responseType = context.ContextOuterClass.SliceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter,
-      context.ContextOuterClass.SliceList> getSelectSliceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList> getSelectSliceMethod;
-    if ((getSelectSliceMethod = ContextServiceGrpc.getSelectSliceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSelectSliceMethod = ContextServiceGrpc.getSelectSliceMethod) == null) {
-          ContextServiceGrpc.getSelectSliceMethod = getSelectSliceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectSlice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceFilter.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectSlice"))
-              .build();
-        }
-      }
-    }
-    return getSelectSliceMethod;
-  }
-
   private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
       context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod;
 
@@ -1644,13 +1489,6 @@ public final class ContextServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver);
     }
 
-    /**
-     */
-    public void getTopologyDetails(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver);
-    }
-
     /**
      */
     public void setTopology(context.ContextOuterClass.Topology request,
@@ -1714,20 +1552,6 @@ public final class ContextServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver);
     }
 
-    /**
-     */
-    public void selectDevice(context.ContextOuterClass.DeviceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void listEndPointNames(context.ContextOuterClass.EndPointIdList request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver);
-    }
-
     /**
      */
     public void listLinkIds(context.ContextOuterClass.Empty request,
@@ -1819,13 +1643,6 @@ public final class ContextServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver);
     }
 
-    /**
-     */
-    public void selectService(context.ContextOuterClass.ServiceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver);
-    }
-
     /**
      */
     public void listSliceIds(context.ContextOuterClass.ContextId request,
@@ -1875,13 +1692,6 @@ public final class ContextServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver);
     }
 
-    /**
-     */
-    public void selectSlice(context.ContextOuterClass.SliceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver);
-    }
-
     /**
      */
     public void listConnectionIds(context.ContextOuterClass.ServiceId request,
@@ -1989,13 +1799,6 @@ public final class ContextServiceGrpc {
                 context.ContextOuterClass.TopologyId,
                 context.ContextOuterClass.Topology>(
                   this, METHODID_GET_TOPOLOGY)))
-          .addMethod(
-            getGetTopologyDetailsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.TopologyId,
-                context.ContextOuterClass.TopologyDetails>(
-                  this, METHODID_GET_TOPOLOGY_DETAILS)))
           .addMethod(
             getSetTopologyMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -2059,20 +1862,6 @@ public final class ContextServiceGrpc {
                 context.ContextOuterClass.Empty,
                 context.ContextOuterClass.DeviceEvent>(
                   this, METHODID_GET_DEVICE_EVENTS)))
-          .addMethod(
-            getSelectDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceFilter,
-                context.ContextOuterClass.DeviceList>(
-                  this, METHODID_SELECT_DEVICE)))
-          .addMethod(
-            getListEndPointNamesMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.EndPointIdList,
-                context.ContextOuterClass.EndPointNameList>(
-                  this, METHODID_LIST_END_POINT_NAMES)))
           .addMethod(
             getListLinkIdsMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -2164,13 +1953,6 @@ public final class ContextServiceGrpc {
                 context.ContextOuterClass.Empty,
                 context.ContextOuterClass.ServiceEvent>(
                   this, METHODID_GET_SERVICE_EVENTS)))
-          .addMethod(
-            getSelectServiceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ServiceFilter,
-                context.ContextOuterClass.ServiceList>(
-                  this, METHODID_SELECT_SERVICE)))
           .addMethod(
             getListSliceIdsMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -2220,13 +2002,6 @@ public final class ContextServiceGrpc {
                 context.ContextOuterClass.Empty,
                 context.ContextOuterClass.SliceEvent>(
                   this, METHODID_GET_SLICE_EVENTS)))
-          .addMethod(
-            getSelectSliceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.SliceFilter,
-                context.ContextOuterClass.SliceList>(
-                  this, METHODID_SELECT_SLICE)))
           .addMethod(
             getListConnectionIdsMethod(),
             io.grpc.stub.ServerCalls.asyncUnaryCall(
@@ -2359,14 +2134,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getGetTopologyMethod(), getCallOptions()), request, responseObserver);
     }
 
-    /**
-     */
-    public void getTopologyDetails(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetTopologyDetailsMethod(), getCallOptions()), request, responseObserver);
-    }
-
     /**
      */
     public void setTopology(context.ContextOuterClass.Topology request,
@@ -2439,22 +2206,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getGetDeviceEventsMethod(), getCallOptions()), request, responseObserver);
     }
 
-    /**
-     */
-    public void selectDevice(context.ContextOuterClass.DeviceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSelectDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void listEndPointNames(context.ContextOuterClass.EndPointIdList request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListEndPointNamesMethod(), getCallOptions()), request, responseObserver);
-    }
-
     /**
      */
     public void listLinkIds(context.ContextOuterClass.Empty request,
@@ -2559,14 +2310,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getGetServiceEventsMethod(), getCallOptions()), request, responseObserver);
     }
 
-    /**
-     */
-    public void selectService(context.ContextOuterClass.ServiceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSelectServiceMethod(), getCallOptions()), request, responseObserver);
-    }
-
     /**
      */
     public void listSliceIds(context.ContextOuterClass.ContextId request,
@@ -2623,14 +2366,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getGetSliceEventsMethod(), getCallOptions()), request, responseObserver);
     }
 
-    /**
-     */
-    public void selectSlice(context.ContextOuterClass.SliceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSelectSliceMethod(), getCallOptions()), request, responseObserver);
-    }
-
     /**
      */
     public void listConnectionIds(context.ContextOuterClass.ServiceId request,
@@ -2758,13 +2493,6 @@ public final class ContextServiceGrpc {
           getChannel(), getGetTopologyMethod(), getCallOptions(), request);
     }
 
-    /**
-     */
-    public context.ContextOuterClass.TopologyDetails getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetTopologyDetailsMethod(), getCallOptions(), request);
-    }
-
     /**
      */
     public context.ContextOuterClass.TopologyId setTopology(context.ContextOuterClass.Topology request) {
@@ -2830,20 +2558,6 @@ public final class ContextServiceGrpc {
           getChannel(), getGetDeviceEventsMethod(), getCallOptions(), request);
     }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceList selectDevice(context.ContextOuterClass.DeviceFilter request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSelectDeviceMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public context.ContextOuterClass.EndPointNameList listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListEndPointNamesMethod(), getCallOptions(), request);
-    }
-
     /**
      */
     public context.ContextOuterClass.LinkIdList listLinkIds(context.ContextOuterClass.Empty request) {
@@ -2937,13 +2651,6 @@ public final class ContextServiceGrpc {
           getChannel(), getGetServiceEventsMethod(), getCallOptions(), request);
     }
 
-    /**
-     */
-    public context.ContextOuterClass.ServiceList selectService(context.ContextOuterClass.ServiceFilter request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSelectServiceMethod(), getCallOptions(), request);
-    }
-
     /**
      */
     public context.ContextOuterClass.SliceIdList listSliceIds(context.ContextOuterClass.ContextId request) {
@@ -2994,13 +2701,6 @@ public final class ContextServiceGrpc {
           getChannel(), getGetSliceEventsMethod(), getCallOptions(), request);
     }
 
-    /**
-     */
-    public context.ContextOuterClass.SliceList selectSlice(context.ContextOuterClass.SliceFilter request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSelectSliceMethod(), getCallOptions(), request);
-    }
-
     /**
      */
     public context.ContextOuterClass.ConnectionIdList listConnectionIds(context.ContextOuterClass.ServiceId request) {
@@ -3123,14 +2823,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getGetTopologyMethod(), getCallOptions()), request);
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyDetails> getTopologyDetails(
-        context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetTopologyDetailsMethod(), getCallOptions()), request);
-    }
-
     /**
      */
     public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyId> setTopology(
@@ -3187,22 +2879,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getRemoveDeviceMethod(), getCallOptions()), request);
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceList> selectDevice(
-        context.ContextOuterClass.DeviceFilter request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSelectDeviceMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.EndPointNameList> listEndPointNames(
-        context.ContextOuterClass.EndPointIdList request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListEndPointNamesMethod(), getCallOptions()), request);
-    }
-
     /**
      */
     public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkIdList> listLinkIds(
@@ -3291,14 +2967,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getRemoveServiceMethod(), getCallOptions()), request);
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceList> selectService(
-        context.ContextOuterClass.ServiceFilter request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSelectServiceMethod(), getCallOptions()), request);
-    }
-
     /**
      */
     public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceIdList> listSliceIds(
@@ -3347,14 +3015,6 @@ public final class ContextServiceGrpc {
           getChannel().newCall(getRemoveSliceMethod(), getCallOptions()), request);
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceList> selectSlice(
-        context.ContextOuterClass.SliceFilter request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSelectSliceMethod(), getCallOptions()), request);
-    }
-
     /**
      */
     public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionIdList> listConnectionIds(
@@ -3405,46 +3065,41 @@ public final class ContextServiceGrpc {
   private static final int METHODID_LIST_TOPOLOGY_IDS = 6;
   private static final int METHODID_LIST_TOPOLOGIES = 7;
   private static final int METHODID_GET_TOPOLOGY = 8;
-  private static final int METHODID_GET_TOPOLOGY_DETAILS = 9;
-  private static final int METHODID_SET_TOPOLOGY = 10;
-  private static final int METHODID_REMOVE_TOPOLOGY = 11;
-  private static final int METHODID_GET_TOPOLOGY_EVENTS = 12;
-  private static final int METHODID_LIST_DEVICE_IDS = 13;
-  private static final int METHODID_LIST_DEVICES = 14;
-  private static final int METHODID_GET_DEVICE = 15;
-  private static final int METHODID_SET_DEVICE = 16;
-  private static final int METHODID_REMOVE_DEVICE = 17;
-  private static final int METHODID_GET_DEVICE_EVENTS = 18;
-  private static final int METHODID_SELECT_DEVICE = 19;
-  private static final int METHODID_LIST_END_POINT_NAMES = 20;
-  private static final int METHODID_LIST_LINK_IDS = 21;
-  private static final int METHODID_LIST_LINKS = 22;
-  private static final int METHODID_GET_LINK = 23;
-  private static final int METHODID_SET_LINK = 24;
-  private static final int METHODID_REMOVE_LINK = 25;
-  private static final int METHODID_GET_LINK_EVENTS = 26;
-  private static final int METHODID_LIST_SERVICE_IDS = 27;
-  private static final int METHODID_LIST_SERVICES = 28;
-  private static final int METHODID_GET_SERVICE = 29;
-  private static final int METHODID_SET_SERVICE = 30;
-  private static final int METHODID_UNSET_SERVICE = 31;
-  private static final int METHODID_REMOVE_SERVICE = 32;
-  private static final int METHODID_GET_SERVICE_EVENTS = 33;
-  private static final int METHODID_SELECT_SERVICE = 34;
-  private static final int METHODID_LIST_SLICE_IDS = 35;
-  private static final int METHODID_LIST_SLICES = 36;
-  private static final int METHODID_GET_SLICE = 37;
-  private static final int METHODID_SET_SLICE = 38;
-  private static final int METHODID_UNSET_SLICE = 39;
-  private static final int METHODID_REMOVE_SLICE = 40;
-  private static final int METHODID_GET_SLICE_EVENTS = 41;
-  private static final int METHODID_SELECT_SLICE = 42;
-  private static final int METHODID_LIST_CONNECTION_IDS = 43;
-  private static final int METHODID_LIST_CONNECTIONS = 44;
-  private static final int METHODID_GET_CONNECTION = 45;
-  private static final int METHODID_SET_CONNECTION = 46;
-  private static final int METHODID_REMOVE_CONNECTION = 47;
-  private static final int METHODID_GET_CONNECTION_EVENTS = 48;
+  private static final int METHODID_SET_TOPOLOGY = 9;
+  private static final int METHODID_REMOVE_TOPOLOGY = 10;
+  private static final int METHODID_GET_TOPOLOGY_EVENTS = 11;
+  private static final int METHODID_LIST_DEVICE_IDS = 12;
+  private static final int METHODID_LIST_DEVICES = 13;
+  private static final int METHODID_GET_DEVICE = 14;
+  private static final int METHODID_SET_DEVICE = 15;
+  private static final int METHODID_REMOVE_DEVICE = 16;
+  private static final int METHODID_GET_DEVICE_EVENTS = 17;
+  private static final int METHODID_LIST_LINK_IDS = 18;
+  private static final int METHODID_LIST_LINKS = 19;
+  private static final int METHODID_GET_LINK = 20;
+  private static final int METHODID_SET_LINK = 21;
+  private static final int METHODID_REMOVE_LINK = 22;
+  private static final int METHODID_GET_LINK_EVENTS = 23;
+  private static final int METHODID_LIST_SERVICE_IDS = 24;
+  private static final int METHODID_LIST_SERVICES = 25;
+  private static final int METHODID_GET_SERVICE = 26;
+  private static final int METHODID_SET_SERVICE = 27;
+  private static final int METHODID_UNSET_SERVICE = 28;
+  private static final int METHODID_REMOVE_SERVICE = 29;
+  private static final int METHODID_GET_SERVICE_EVENTS = 30;
+  private static final int METHODID_LIST_SLICE_IDS = 31;
+  private static final int METHODID_LIST_SLICES = 32;
+  private static final int METHODID_GET_SLICE = 33;
+  private static final int METHODID_SET_SLICE = 34;
+  private static final int METHODID_UNSET_SLICE = 35;
+  private static final int METHODID_REMOVE_SLICE = 36;
+  private static final int METHODID_GET_SLICE_EVENTS = 37;
+  private static final int METHODID_LIST_CONNECTION_IDS = 38;
+  private static final int METHODID_LIST_CONNECTIONS = 39;
+  private static final int METHODID_GET_CONNECTION = 40;
+  private static final int METHODID_SET_CONNECTION = 41;
+  private static final int METHODID_REMOVE_CONNECTION = 42;
+  private static final int METHODID_GET_CONNECTION_EVENTS = 43;
 
   private static final class MethodHandlers<Req, Resp> implements
       io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -3499,10 +3154,6 @@ public final class ContextServiceGrpc {
           serviceImpl.getTopology((context.ContextOuterClass.TopologyId) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology>) responseObserver);
           break;
-        case METHODID_GET_TOPOLOGY_DETAILS:
-          serviceImpl.getTopologyDetails((context.ContextOuterClass.TopologyId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails>) responseObserver);
-          break;
         case METHODID_SET_TOPOLOGY:
           serviceImpl.setTopology((context.ContextOuterClass.Topology) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId>) responseObserver);
@@ -3539,14 +3190,6 @@ public final class ContextServiceGrpc {
           serviceImpl.getDeviceEvents((context.ContextOuterClass.Empty) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent>) responseObserver);
           break;
-        case METHODID_SELECT_DEVICE:
-          serviceImpl.selectDevice((context.ContextOuterClass.DeviceFilter) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver);
-          break;
-        case METHODID_LIST_END_POINT_NAMES:
-          serviceImpl.listEndPointNames((context.ContextOuterClass.EndPointIdList) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList>) responseObserver);
-          break;
         case METHODID_LIST_LINK_IDS:
           serviceImpl.listLinkIds((context.ContextOuterClass.Empty) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList>) responseObserver);
@@ -3599,10 +3242,6 @@ public final class ContextServiceGrpc {
           serviceImpl.getServiceEvents((context.ContextOuterClass.Empty) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent>) responseObserver);
           break;
-        case METHODID_SELECT_SERVICE:
-          serviceImpl.selectService((context.ContextOuterClass.ServiceFilter) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver);
-          break;
         case METHODID_LIST_SLICE_IDS:
           serviceImpl.listSliceIds((context.ContextOuterClass.ContextId) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList>) responseObserver);
@@ -3631,10 +3270,6 @@ public final class ContextServiceGrpc {
           serviceImpl.getSliceEvents((context.ContextOuterClass.Empty) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent>) responseObserver);
           break;
-        case METHODID_SELECT_SLICE:
-          serviceImpl.selectSlice((context.ContextOuterClass.SliceFilter) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver);
-          break;
         case METHODID_LIST_CONNECTION_IDS:
           serviceImpl.listConnectionIds((context.ContextOuterClass.ServiceId) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList>) responseObserver);
@@ -3729,7 +3364,6 @@ public final class ContextServiceGrpc {
               .addMethod(getListTopologyIdsMethod())
               .addMethod(getListTopologiesMethod())
               .addMethod(getGetTopologyMethod())
-              .addMethod(getGetTopologyDetailsMethod())
               .addMethod(getSetTopologyMethod())
               .addMethod(getRemoveTopologyMethod())
               .addMethod(getGetTopologyEventsMethod())
@@ -3739,8 +3373,6 @@ public final class ContextServiceGrpc {
               .addMethod(getSetDeviceMethod())
               .addMethod(getRemoveDeviceMethod())
               .addMethod(getGetDeviceEventsMethod())
-              .addMethod(getSelectDeviceMethod())
-              .addMethod(getListEndPointNamesMethod())
               .addMethod(getListLinkIdsMethod())
               .addMethod(getListLinksMethod())
               .addMethod(getGetLinkMethod())
@@ -3754,7 +3386,6 @@ public final class ContextServiceGrpc {
               .addMethod(getUnsetServiceMethod())
               .addMethod(getRemoveServiceMethod())
               .addMethod(getGetServiceEventsMethod())
-              .addMethod(getSelectServiceMethod())
               .addMethod(getListSliceIdsMethod())
               .addMethod(getListSlicesMethod())
               .addMethod(getGetSliceMethod())
@@ -3762,7 +3393,6 @@ public final class ContextServiceGrpc {
               .addMethod(getUnsetSliceMethod())
               .addMethod(getRemoveSliceMethod())
               .addMethod(getGetSliceEventsMethod())
-              .addMethod(getSelectSliceMethod())
               .addMethod(getListConnectionIdsMethod())
               .addMethod(getListConnectionsMethod())
               .addMethod(getGetConnectionMethod())
diff --git a/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
index 45d853aa7771c71679f1b7a67051a478b3f73be8..f7d2cb94e339366b54355c7e11b3ee72fa1e415c 100644
--- a/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
@@ -76,11 +76,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getTopologyDetails);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setTopology);
         }
@@ -116,16 +111,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::selectDevice);
-        }
-
-        
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listEndPointNames);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listLinkIds);
         }
@@ -181,11 +166,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::selectService);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listSliceIds);
         }
@@ -216,11 +196,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::selectSlice);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listConnectionIds);
         }
@@ -338,11 +313,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
@@ -378,16 +348,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-        }
-
-        
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
@@ -443,11 +403,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
@@ -478,11 +433,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         }
 
         
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-        }
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
@@ -607,13 +557,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                                             context.ContextOuterClass.TopologyId,
                                             context.ContextOuterClass.Topology>(
                                             this, METHODID_GET_TOPOLOGY, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetTopologyDetailsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.TopologyId,
-                                            context.ContextOuterClass.TopologyDetails>(
-                                            this, METHODID_GET_TOPOLOGY_DETAILS, compression)))
                     .addMethod(
                             context.ContextServiceGrpc.getSetTopologyMethod(),
                             asyncUnaryCall(
@@ -677,20 +620,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                                             context.ContextOuterClass.Empty,
                                             context.ContextOuterClass.DeviceEvent>(
                                             this, METHODID_GET_DEVICE_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSelectDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceFilter,
-                                            context.ContextOuterClass.DeviceList>(
-                                            this, METHODID_SELECT_DEVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListEndPointNamesMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.EndPointIdList,
-                                            context.ContextOuterClass.EndPointNameList>(
-                                            this, METHODID_LIST_END_POINT_NAMES, compression)))
                     .addMethod(
                             context.ContextServiceGrpc.getListLinkIdsMethod(),
                             asyncUnaryCall(
@@ -782,13 +711,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                                             context.ContextOuterClass.Empty,
                                             context.ContextOuterClass.ServiceEvent>(
                                             this, METHODID_GET_SERVICE_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSelectServiceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ServiceFilter,
-                                            context.ContextOuterClass.ServiceList>(
-                                            this, METHODID_SELECT_SERVICE, compression)))
                     .addMethod(
                             context.ContextServiceGrpc.getListSliceIdsMethod(),
                             asyncUnaryCall(
@@ -838,13 +760,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                                             context.ContextOuterClass.Empty,
                                             context.ContextOuterClass.SliceEvent>(
                                             this, METHODID_GET_SLICE_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSelectSliceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.SliceFilter,
-                                            context.ContextOuterClass.SliceList>(
-                                            this, METHODID_SELECT_SLICE, compression)))
                     .addMethod(
                             context.ContextServiceGrpc.getListConnectionIdsMethod(),
                             asyncUnaryCall(
@@ -900,46 +815,41 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
     private static final int METHODID_LIST_TOPOLOGY_IDS = 6;
     private static final int METHODID_LIST_TOPOLOGIES = 7;
     private static final int METHODID_GET_TOPOLOGY = 8;
-    private static final int METHODID_GET_TOPOLOGY_DETAILS = 9;
-    private static final int METHODID_SET_TOPOLOGY = 10;
-    private static final int METHODID_REMOVE_TOPOLOGY = 11;
-    private static final int METHODID_GET_TOPOLOGY_EVENTS = 12;
-    private static final int METHODID_LIST_DEVICE_IDS = 13;
-    private static final int METHODID_LIST_DEVICES = 14;
-    private static final int METHODID_GET_DEVICE = 15;
-    private static final int METHODID_SET_DEVICE = 16;
-    private static final int METHODID_REMOVE_DEVICE = 17;
-    private static final int METHODID_GET_DEVICE_EVENTS = 18;
-    private static final int METHODID_SELECT_DEVICE = 19;
-    private static final int METHODID_LIST_END_POINT_NAMES = 20;
-    private static final int METHODID_LIST_LINK_IDS = 21;
-    private static final int METHODID_LIST_LINKS = 22;
-    private static final int METHODID_GET_LINK = 23;
-    private static final int METHODID_SET_LINK = 24;
-    private static final int METHODID_REMOVE_LINK = 25;
-    private static final int METHODID_GET_LINK_EVENTS = 26;
-    private static final int METHODID_LIST_SERVICE_IDS = 27;
-    private static final int METHODID_LIST_SERVICES = 28;
-    private static final int METHODID_GET_SERVICE = 29;
-    private static final int METHODID_SET_SERVICE = 30;
-    private static final int METHODID_UNSET_SERVICE = 31;
-    private static final int METHODID_REMOVE_SERVICE = 32;
-    private static final int METHODID_GET_SERVICE_EVENTS = 33;
-    private static final int METHODID_SELECT_SERVICE = 34;
-    private static final int METHODID_LIST_SLICE_IDS = 35;
-    private static final int METHODID_LIST_SLICES = 36;
-    private static final int METHODID_GET_SLICE = 37;
-    private static final int METHODID_SET_SLICE = 38;
-    private static final int METHODID_UNSET_SLICE = 39;
-    private static final int METHODID_REMOVE_SLICE = 40;
-    private static final int METHODID_GET_SLICE_EVENTS = 41;
-    private static final int METHODID_SELECT_SLICE = 42;
-    private static final int METHODID_LIST_CONNECTION_IDS = 43;
-    private static final int METHODID_LIST_CONNECTIONS = 44;
-    private static final int METHODID_GET_CONNECTION = 45;
-    private static final int METHODID_SET_CONNECTION = 46;
-    private static final int METHODID_REMOVE_CONNECTION = 47;
-    private static final int METHODID_GET_CONNECTION_EVENTS = 48;
+    private static final int METHODID_SET_TOPOLOGY = 9;
+    private static final int METHODID_REMOVE_TOPOLOGY = 10;
+    private static final int METHODID_GET_TOPOLOGY_EVENTS = 11;
+    private static final int METHODID_LIST_DEVICE_IDS = 12;
+    private static final int METHODID_LIST_DEVICES = 13;
+    private static final int METHODID_GET_DEVICE = 14;
+    private static final int METHODID_SET_DEVICE = 15;
+    private static final int METHODID_REMOVE_DEVICE = 16;
+    private static final int METHODID_GET_DEVICE_EVENTS = 17;
+    private static final int METHODID_LIST_LINK_IDS = 18;
+    private static final int METHODID_LIST_LINKS = 19;
+    private static final int METHODID_GET_LINK = 20;
+    private static final int METHODID_SET_LINK = 21;
+    private static final int METHODID_REMOVE_LINK = 22;
+    private static final int METHODID_GET_LINK_EVENTS = 23;
+    private static final int METHODID_LIST_SERVICE_IDS = 24;
+    private static final int METHODID_LIST_SERVICES = 25;
+    private static final int METHODID_GET_SERVICE = 26;
+    private static final int METHODID_SET_SERVICE = 27;
+    private static final int METHODID_UNSET_SERVICE = 28;
+    private static final int METHODID_REMOVE_SERVICE = 29;
+    private static final int METHODID_GET_SERVICE_EVENTS = 30;
+    private static final int METHODID_LIST_SLICE_IDS = 31;
+    private static final int METHODID_LIST_SLICES = 32;
+    private static final int METHODID_GET_SLICE = 33;
+    private static final int METHODID_SET_SLICE = 34;
+    private static final int METHODID_UNSET_SLICE = 35;
+    private static final int METHODID_REMOVE_SLICE = 36;
+    private static final int METHODID_GET_SLICE_EVENTS = 37;
+    private static final int METHODID_LIST_CONNECTION_IDS = 38;
+    private static final int METHODID_LIST_CONNECTIONS = 39;
+    private static final int METHODID_GET_CONNECTION = 40;
+    private static final int METHODID_SET_CONNECTION = 41;
+    private static final int METHODID_REMOVE_CONNECTION = 42;
+    private static final int METHODID_GET_CONNECTION_EVENTS = 43;
 
     private static final class MethodHandlers<Req, Resp> implements
             io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -1014,12 +924,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                             compression,
                             serviceImpl::getTopology);
                     break;
-                case METHODID_GET_TOPOLOGY_DETAILS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails>) responseObserver,
-                            compression,
-                            serviceImpl::getTopologyDetails);
-                    break;
                 case METHODID_SET_TOPOLOGY:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Topology) request,
                             (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId>) responseObserver,
@@ -1074,18 +978,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                             compression,
                             serviceImpl::getDeviceEvents);
                     break;
-                case METHODID_SELECT_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceFilter) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver,
-                            compression,
-                            serviceImpl::selectDevice);
-                    break;
-                case METHODID_LIST_END_POINT_NAMES:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.EndPointIdList) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList>) responseObserver,
-                            compression,
-                            serviceImpl::listEndPointNames);
-                    break;
                 case METHODID_LIST_LINK_IDS:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
                             (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList>) responseObserver,
@@ -1164,12 +1056,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                             compression,
                             serviceImpl::getServiceEvents);
                     break;
-                case METHODID_SELECT_SERVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceFilter) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver,
-                            compression,
-                            serviceImpl::selectService);
-                    break;
                 case METHODID_LIST_SLICE_IDS:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
                             (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList>) responseObserver,
@@ -1212,12 +1098,6 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
                             compression,
                             serviceImpl::getSliceEvents);
                     break;
-                case METHODID_SELECT_SLICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.SliceFilter) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver,
-                            compression,
-                            serviceImpl::selectSlice);
-                    break;
                 case METHODID_LIST_CONNECTION_IDS:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request,
                             (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList>) responseObserver,
diff --git a/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java b/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
index 217672b2e8de2d7c840833a937b0fb04c38a221b..67e1ec736f9d83cbf95b419e9e61e92e82e73b88 100644
--- a/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
+++ b/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
@@ -31,10 +31,6 @@ public final class KpiSampleTypes {
      * <code>KPISAMPLETYPE_PACKETS_RECEIVED = 102;</code>
      */
     KPISAMPLETYPE_PACKETS_RECEIVED(102),
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_DROPPED = 103;</code>
-     */
-    KPISAMPLETYPE_PACKETS_DROPPED(103),
     /**
      * <code>KPISAMPLETYPE_BYTES_TRANSMITTED = 201;</code>
      */
@@ -43,50 +39,6 @@ public final class KpiSampleTypes {
      * <code>KPISAMPLETYPE_BYTES_RECEIVED = 202;</code>
      */
     KPISAMPLETYPE_BYTES_RECEIVED(202),
-    /**
-     * <code>KPISAMPLETYPE_BYTES_DROPPED = 203;</code>
-     */
-    KPISAMPLETYPE_BYTES_DROPPED(203),
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_ML_CONFIDENCE = 401;</code>
-     */
-    KPISAMPLETYPE_ML_CONFIDENCE(401),
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501;</code>
-     */
-    KPISAMPLETYPE_OPTICAL_SECURITY_STATUS(501),
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601;</code>
-     */
-    KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS(601),
-    /**
-     * <code>KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602;</code>
-     */
-    KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS(602),
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603;</code>
-     */
-    KPISAMPLETYPE_L3_UNIQUE_ATTACKERS(603),
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604;</code>
-     */
-    KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS(604),
-    /**
-     * <code>KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605;</code>
-     */
-    KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO(605),
-    /**
-     * <code>KPISAMPLETYPE_SERVICE_LATENCY_MS = 701;</code>
-     */
-    KPISAMPLETYPE_SERVICE_LATENCY_MS(701),
     UNRECOGNIZED(-1),
     ;
 
@@ -102,10 +54,6 @@ public final class KpiSampleTypes {
      * <code>KPISAMPLETYPE_PACKETS_RECEIVED = 102;</code>
      */
     public static final int KPISAMPLETYPE_PACKETS_RECEIVED_VALUE = 102;
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_DROPPED = 103;</code>
-     */
-    public static final int KPISAMPLETYPE_PACKETS_DROPPED_VALUE = 103;
     /**
      * <code>KPISAMPLETYPE_BYTES_TRANSMITTED = 201;</code>
      */
@@ -114,50 +62,6 @@ public final class KpiSampleTypes {
      * <code>KPISAMPLETYPE_BYTES_RECEIVED = 202;</code>
      */
     public static final int KPISAMPLETYPE_BYTES_RECEIVED_VALUE = 202;
-    /**
-     * <code>KPISAMPLETYPE_BYTES_DROPPED = 203;</code>
-     */
-    public static final int KPISAMPLETYPE_BYTES_DROPPED_VALUE = 203;
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_ML_CONFIDENCE = 401;</code>
-     */
-    public static final int KPISAMPLETYPE_ML_CONFIDENCE_VALUE = 401;
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501;</code>
-     */
-    public static final int KPISAMPLETYPE_OPTICAL_SECURITY_STATUS_VALUE = 501;
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS_VALUE = 601;
-    /**
-     * <code>KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS_VALUE = 602;
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACKERS_VALUE = 603;
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS_VALUE = 604;
-    /**
-     * <code>KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO_VALUE = 605;
-    /**
-     * <code>KPISAMPLETYPE_SERVICE_LATENCY_MS = 701;</code>
-     */
-    public static final int KPISAMPLETYPE_SERVICE_LATENCY_MS_VALUE = 701;
 
 
     public final int getNumber() {
@@ -187,18 +91,8 @@ public final class KpiSampleTypes {
         case 0: return KPISAMPLETYPE_UNKNOWN;
         case 101: return KPISAMPLETYPE_PACKETS_TRANSMITTED;
         case 102: return KPISAMPLETYPE_PACKETS_RECEIVED;
-        case 103: return KPISAMPLETYPE_PACKETS_DROPPED;
         case 201: return KPISAMPLETYPE_BYTES_TRANSMITTED;
         case 202: return KPISAMPLETYPE_BYTES_RECEIVED;
-        case 203: return KPISAMPLETYPE_BYTES_DROPPED;
-        case 401: return KPISAMPLETYPE_ML_CONFIDENCE;
-        case 501: return KPISAMPLETYPE_OPTICAL_SECURITY_STATUS;
-        case 601: return KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS;
-        case 602: return KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS;
-        case 603: return KPISAMPLETYPE_L3_UNIQUE_ATTACKERS;
-        case 604: return KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS;
-        case 605: return KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO;
-        case 701: return KPISAMPLETYPE_SERVICE_LATENCY_MS;
         default: return null;
       }
     }
@@ -265,22 +159,12 @@ public final class KpiSampleTypes {
   static {
     java.lang.String[] descriptorData = {
       "\n\026kpi_sample_types.proto\022\020kpi_sample_typ" +
-      "es*\327\004\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
+      "es*\276\001\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
       "KNOWN\020\000\022%\n!KPISAMPLETYPE_PACKETS_TRANSMI" +
       "TTED\020e\022\"\n\036KPISAMPLETYPE_PACKETS_RECEIVED" +
-      "\020f\022!\n\035KPISAMPLETYPE_PACKETS_DROPPED\020g\022$\n" +
-      "\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001\022!\n\034K" +
-      "PISAMPLETYPE_BYTES_RECEIVED\020\312\001\022 \n\033KPISAM" +
-      "PLETYPE_BYTES_DROPPED\020\313\001\022 \n\033KPISAMPLETYP" +
-      "E_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLETYPE_OPTI" +
-      "CAL_SECURITY_STATUS\020\365\003\022)\n$KPISAMPLETYPE_" +
-      "L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KPISAMPLETY" +
-      "PE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&\n!KPISAMP" +
-      "LETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220\n+KPISAMP" +
-      "LETYPE_L3_UNIQUE_COMPROMISED_CLIENTS\020\334\004\022" +
-      ",\n\'KPISAMPLETYPE_L3_SECURITY_STATUS_CRYP" +
-      "TO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_LATENCY_M" +
-      "S\020\275\005b\006proto3"
+      "\020f\022$\n\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001" +
+      "\022!\n\034KPISAMPLETYPE_BYTES_RECEIVED\020\312\001b\006pro" +
+      "to3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
index 38f026eb1ac730e8f825e460916dc57469f0d312..ffd0ed3d839d951c755153b6f5beaf4b1a12cd2e 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -139,21 +139,6 @@ public final class Monitoring {
      * <code>.context.SliceId slice_id = 8;</code>
      */
     context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
-
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return Whether the connectionId field is set.
-     */
-    boolean hasConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return The connectionId.
-     */
-    context.ContextOuterClass.ConnectionId getConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
   }
   /**
    * Protobuf type {@code monitoring.KpiDescriptor}
@@ -290,19 +275,6 @@ public final class Monitoring {
 
               break;
             }
-            case 74: {
-              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-              if (connectionId_ != null) {
-                subBuilder = connectionId_.toBuilder();
-              }
-              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionId_);
-                connectionId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -565,32 +537,6 @@ public final class Monitoring {
       return getSliceId();
     }
 
-    public static final int CONNECTION_ID_FIELD_NUMBER = 9;
-    private context.ContextOuterClass.ConnectionId connectionId_;
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return Whether the connectionId field is set.
-     */
-    @java.lang.Override
-    public boolean hasConnectionId() {
-      return connectionId_ != null;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</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 = 9;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-      return getConnectionId();
-    }
-
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -629,9 +575,6 @@ public final class Monitoring {
       if (sliceId_ != null) {
         output.writeMessage(8, getSliceId());
       }
-      if (connectionId_ != null) {
-        output.writeMessage(9, getConnectionId());
-      }
       unknownFields.writeTo(output);
     }
 
@@ -672,10 +615,6 @@ public final class Monitoring {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(8, getSliceId());
       }
-      if (connectionId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, getConnectionId());
-      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -721,11 +660,6 @@ public final class Monitoring {
         if (!getSliceId()
             .equals(other.getSliceId())) return false;
       }
-      if (hasConnectionId() != other.hasConnectionId()) return false;
-      if (hasConnectionId()) {
-        if (!getConnectionId()
-            .equals(other.getConnectionId())) return false;
-      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -765,10 +699,6 @@ public final class Monitoring {
         hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
         hash = (53 * hash) + getSliceId().hashCode();
       }
-      if (hasConnectionId()) {
-        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionId().hashCode();
-      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -943,12 +873,6 @@ public final class Monitoring {
           sliceId_ = null;
           sliceIdBuilder_ = null;
         }
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
         return this;
       }
 
@@ -1012,11 +936,6 @@ public final class Monitoring {
         } else {
           result.sliceId_ = sliceIdBuilder_.build();
         }
-        if (connectionIdBuilder_ == null) {
-          result.connectionId_ = connectionId_;
-        } else {
-          result.connectionId_ = connectionIdBuilder_.build();
-        }
         onBuilt();
         return result;
       }
@@ -1113,9 +1032,6 @@ public final class Monitoring {
         if (other.hasSliceId()) {
           mergeSliceId(other.getSliceId());
         }
-        if (other.hasConnectionId()) {
-          mergeConnectionId(other.getConnectionId());
-        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -2110,125 +2026,6 @@ public final class Monitoring {
         }
         return sliceIdBuilder_;
       }
-
-      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 = 9;</code>
-       * @return Whether the connectionId field is set.
-       */
-      public boolean hasConnectionId() {
-        return connectionIdBuilder_ != null || connectionId_ != null;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</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 = 9;</code>
-       */
-      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          connectionId_ = value;
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder setConnectionId(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = builderForValue.build();
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (connectionId_ != null) {
-            connectionId_ =
-              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
-          } else {
-            connectionId_ = value;
-          }
-          onChanged();
-        } else {
-          connectionIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder clearConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-          onChanged();
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-        
-        onChanged();
-        return getConnectionIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</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 = 9;</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) {
@@ -3072,28 +2869,19 @@ public final class Monitoring {
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.KpiId> 
-        getKpiIdsList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    monitoring.Monitoring.KpiId getKpiIds(int index);
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
      */
-    int getKpiIdsCount();
+    boolean hasKpiId();
     /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return The kpiId.
      */
-    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdsOrBuilderList();
+    monitoring.Monitoring.KpiId getKpiId();
     /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(
-        int index);
+    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
 
     /**
      * <code>float monitoring_window_s = 2;</code>
@@ -3101,12 +2889,18 @@ public final class Monitoring {
      */
     float getMonitoringWindowS();
 
+    /**
+     * <code>float sampling_rate_s = 3;</code>
+     * @return The samplingRateS.
+     */
+    float getSamplingRateS();
+
     /**
      * <pre>
      * used when you want something like "get the last N many samples
      * </pre>
      *
-     * <code>uint32 last_n_samples = 3;</code>
+     * <code>uint32 last_n_samples = 4;</code>
      * @return The lastNSamples.
      */
     int getLastNSamples();
@@ -3116,7 +2910,7 @@ public final class Monitoring {
      * used when you want something like "get the samples since X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      * @return Whether the startTimestamp field is set.
      */
     boolean hasStartTimestamp();
@@ -3125,7 +2919,7 @@ public final class Monitoring {
      * used when you want something like "get the samples since X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      * @return The startTimestamp.
      */
     context.ContextOuterClass.Timestamp getStartTimestamp();
@@ -3134,7 +2928,7 @@ public final class Monitoring {
      * used when you want something like "get the samples since X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      */
     context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
 
@@ -3143,7 +2937,7 @@ public final class Monitoring {
      * used when you want something like "get the samples until X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      * @return Whether the endTimestamp field is set.
      */
     boolean hasEndTimestamp();
@@ -3152,7 +2946,7 @@ public final class Monitoring {
      * used when you want something like "get the samples until X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      * @return The endTimestamp.
      */
     context.ContextOuterClass.Timestamp getEndTimestamp();
@@ -3161,7 +2955,7 @@ public final class Monitoring {
      * used when you want something like "get the samples until X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      */
     context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
   }
@@ -3178,7 +2972,6 @@ public final class Monitoring {
       super(builder);
     }
     private KpiQuery() {
-      kpiIds_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
@@ -3201,7 +2994,6 @@ public final class Monitoring {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -3213,12 +3005,16 @@ public final class Monitoring {
               done = true;
               break;
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
-                mutable_bitField0_ |= 0x00000001;
+              monitoring.Monitoring.KpiId.Builder subBuilder = null;
+              if (kpiId_ != null) {
+                subBuilder = kpiId_.toBuilder();
               }
-              kpiIds_.add(
-                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kpiId_);
+                kpiId_ = subBuilder.buildPartial();
+              }
+
               break;
             }
             case 21: {
@@ -3226,12 +3022,17 @@ public final class Monitoring {
               monitoringWindowS_ = input.readFloat();
               break;
             }
-            case 24: {
+            case 29: {
+
+              samplingRateS_ = input.readFloat();
+              break;
+            }
+            case 32: {
 
               lastNSamples_ = input.readUInt32();
               break;
             }
-            case 34: {
+            case 42: {
               context.ContextOuterClass.Timestamp.Builder subBuilder = null;
               if (startTimestamp_ != null) {
                 subBuilder = startTimestamp_.toBuilder();
@@ -3244,7 +3045,7 @@ public final class Monitoring {
 
               break;
             }
-            case 42: {
+            case 50: {
               context.ContextOuterClass.Timestamp.Builder subBuilder = null;
               if (endTimestamp_ != null) {
                 subBuilder = endTimestamp_.toBuilder();
@@ -3272,9 +3073,6 @@ public final class Monitoring {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -3292,44 +3090,30 @@ public final class Monitoring {
               monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
     }
 
-    public static final int KPI_IDS_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.KpiId> kpiIds_;
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList() {
-      return kpiIds_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdsOrBuilderList() {
-      return kpiIds_;
-    }
+    public static final int KPI_ID_FIELD_NUMBER = 1;
+    private monitoring.Monitoring.KpiId kpiId_;
     /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return Whether the kpiId field is set.
      */
     @java.lang.Override
-    public int getKpiIdsCount() {
-      return kpiIds_.size();
+    public boolean hasKpiId() {
+      return kpiId_ != null;
     }
     /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
+     * @return The kpiId.
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiIds(int index) {
-      return kpiIds_.get(index);
+    public monitoring.Monitoring.KpiId getKpiId() {
+      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
     }
     /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+     * <code>.monitoring.KpiId kpi_id = 1;</code>
      */
     @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(
-        int index) {
-      return kpiIds_.get(index);
+    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+      return getKpiId();
     }
 
     public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
@@ -3343,14 +3127,25 @@ public final class Monitoring {
       return monitoringWindowS_;
     }
 
-    public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
+    public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
+    private float samplingRateS_;
+    /**
+     * <code>float sampling_rate_s = 3;</code>
+     * @return The samplingRateS.
+     */
+    @java.lang.Override
+    public float getSamplingRateS() {
+      return samplingRateS_;
+    }
+
+    public static final int LAST_N_SAMPLES_FIELD_NUMBER = 4;
     private int lastNSamples_;
     /**
      * <pre>
      * used when you want something like "get the last N many samples
      * </pre>
      *
-     * <code>uint32 last_n_samples = 3;</code>
+     * <code>uint32 last_n_samples = 4;</code>
      * @return The lastNSamples.
      */
     @java.lang.Override
@@ -3358,14 +3153,14 @@ public final class Monitoring {
       return lastNSamples_;
     }
 
-    public static final int START_TIMESTAMP_FIELD_NUMBER = 4;
+    public static final int START_TIMESTAMP_FIELD_NUMBER = 5;
     private context.ContextOuterClass.Timestamp startTimestamp_;
     /**
      * <pre>
      * used when you want something like "get the samples since X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      * @return Whether the startTimestamp field is set.
      */
     @java.lang.Override
@@ -3377,7 +3172,7 @@ public final class Monitoring {
      * used when you want something like "get the samples since X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      * @return The startTimestamp.
      */
     @java.lang.Override
@@ -3389,21 +3184,21 @@ public final class Monitoring {
      * used when you want something like "get the samples since X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
+     * <code>.context.Timestamp start_timestamp = 5;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
       return getStartTimestamp();
     }
 
-    public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
+    public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
     private context.ContextOuterClass.Timestamp endTimestamp_;
     /**
      * <pre>
      * used when you want something like "get the samples until X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      * @return Whether the endTimestamp field is set.
      */
     @java.lang.Override
@@ -3415,7 +3210,7 @@ public final class Monitoring {
      * used when you want something like "get the samples until X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      * @return The endTimestamp.
      */
     @java.lang.Override
@@ -3427,7 +3222,7 @@ public final class Monitoring {
      * used when you want something like "get the samples until X date/time"
      * </pre>
      *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
+     * <code>.context.Timestamp end_timestamp = 6;</code>
      */
     @java.lang.Override
     public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
@@ -3448,20 +3243,23 @@ public final class Monitoring {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      for (int i = 0; i < kpiIds_.size(); i++) {
-        output.writeMessage(1, kpiIds_.get(i));
+      if (kpiId_ != null) {
+        output.writeMessage(1, getKpiId());
       }
       if (monitoringWindowS_ != 0F) {
         output.writeFloat(2, monitoringWindowS_);
       }
+      if (samplingRateS_ != 0F) {
+        output.writeFloat(3, samplingRateS_);
+      }
       if (lastNSamples_ != 0) {
-        output.writeUInt32(3, lastNSamples_);
+        output.writeUInt32(4, lastNSamples_);
       }
       if (startTimestamp_ != null) {
-        output.writeMessage(4, getStartTimestamp());
+        output.writeMessage(5, getStartTimestamp());
       }
       if (endTimestamp_ != null) {
-        output.writeMessage(5, getEndTimestamp());
+        output.writeMessage(6, getEndTimestamp());
       }
       unknownFields.writeTo(output);
     }
@@ -3472,25 +3270,29 @@ public final class Monitoring {
       if (size != -1) return size;
 
       size = 0;
-      for (int i = 0; i < kpiIds_.size(); i++) {
+      if (kpiId_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpiIds_.get(i));
+          .computeMessageSize(1, getKpiId());
       }
       if (monitoringWindowS_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(2, monitoringWindowS_);
       }
+      if (samplingRateS_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(3, samplingRateS_);
+      }
       if (lastNSamples_ != 0) {
         size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(3, lastNSamples_);
+          .computeUInt32Size(4, lastNSamples_);
       }
       if (startTimestamp_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getStartTimestamp());
+          .computeMessageSize(5, getStartTimestamp());
       }
       if (endTimestamp_ != null) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getEndTimestamp());
+          .computeMessageSize(6, getEndTimestamp());
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -3507,11 +3309,17 @@ public final class Monitoring {
       }
       monitoring.Monitoring.KpiQuery other = (monitoring.Monitoring.KpiQuery) obj;
 
-      if (!getKpiIdsList()
-          .equals(other.getKpiIdsList())) return false;
+      if (hasKpiId() != other.hasKpiId()) return false;
+      if (hasKpiId()) {
+        if (!getKpiId()
+            .equals(other.getKpiId())) return false;
+      }
       if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
           != java.lang.Float.floatToIntBits(
               other.getMonitoringWindowS())) return false;
+      if (java.lang.Float.floatToIntBits(getSamplingRateS())
+          != java.lang.Float.floatToIntBits(
+              other.getSamplingRateS())) return false;
       if (getLastNSamples()
           != other.getLastNSamples()) return false;
       if (hasStartTimestamp() != other.hasStartTimestamp()) return false;
@@ -3535,13 +3343,16 @@ public final class Monitoring {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiIdsCount() > 0) {
-        hash = (37 * hash) + KPI_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiIdsList().hashCode();
+      if (hasKpiId()) {
+        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getKpiId().hashCode();
       }
       hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
       hash = (53 * hash) + java.lang.Float.floatToIntBits(
           getMonitoringWindowS());
+      hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getSamplingRateS());
       hash = (37 * hash) + LAST_N_SAMPLES_FIELD_NUMBER;
       hash = (53 * hash) + getLastNSamples();
       if (hasStartTimestamp()) {
@@ -3680,20 +3491,21 @@ public final class Monitoring {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
-          getKpiIdsFieldBuilder();
         }
       }
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        if (kpiIdsBuilder_ == null) {
-          kpiIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
         } else {
-          kpiIdsBuilder_.clear();
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
         monitoringWindowS_ = 0F;
 
+        samplingRateS_ = 0F;
+
         lastNSamples_ = 0;
 
         if (startTimestampBuilder_ == null) {
@@ -3734,17 +3546,13 @@ public final class Monitoring {
       @java.lang.Override
       public monitoring.Monitoring.KpiQuery buildPartial() {
         monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiIds_ = kpiIds_;
+        if (kpiIdBuilder_ == null) {
+          result.kpiId_ = kpiId_;
         } else {
-          result.kpiIds_ = kpiIdsBuilder_.build();
+          result.kpiId_ = kpiIdBuilder_.build();
         }
         result.monitoringWindowS_ = monitoringWindowS_;
+        result.samplingRateS_ = samplingRateS_;
         result.lastNSamples_ = lastNSamples_;
         if (startTimestampBuilder_ == null) {
           result.startTimestamp_ = startTimestamp_;
@@ -3804,35 +3612,15 @@ public final class Monitoring {
 
       public Builder mergeFrom(monitoring.Monitoring.KpiQuery other) {
         if (other == monitoring.Monitoring.KpiQuery.getDefaultInstance()) return this;
-        if (kpiIdsBuilder_ == null) {
-          if (!other.kpiIds_.isEmpty()) {
-            if (kpiIds_.isEmpty()) {
-              kpiIds_ = other.kpiIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIdsIsMutable();
-              kpiIds_.addAll(other.kpiIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpiIds_.isEmpty()) {
-            if (kpiIdsBuilder_.isEmpty()) {
-              kpiIdsBuilder_.dispose();
-              kpiIdsBuilder_ = null;
-              kpiIds_ = other.kpiIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiIdsFieldBuilder() : null;
-            } else {
-              kpiIdsBuilder_.addAllMessages(other.kpiIds_);
-            }
-          }
+        if (other.hasKpiId()) {
+          mergeKpiId(other.getKpiId());
         }
         if (other.getMonitoringWindowS() != 0F) {
           setMonitoringWindowS(other.getMonitoringWindowS());
         }
+        if (other.getSamplingRateS() != 0F) {
+          setSamplingRateS(other.getSamplingRateS());
+        }
         if (other.getLastNSamples() != 0) {
           setLastNSamples(other.getLastNSamples());
         }
@@ -3870,246 +3658,124 @@ public final class Monitoring {
         }
         return this;
       }
-      private int bitField0_;
 
-      private java.util.List<monitoring.Monitoring.KpiId> kpiIds_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdsBuilder_;
-
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList() {
-        if (kpiIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiIds_);
-        } else {
-          return kpiIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public int getKpiIdsCount() {
-        if (kpiIdsBuilder_ == null) {
-          return kpiIds_.size();
-        } else {
-          return kpiIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId getKpiIds(int index) {
-        if (kpiIdsBuilder_ == null) {
-          return kpiIds_.get(index);
-        } else {
-          return kpiIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder setKpiIds(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdsIsMutable();
-          kpiIds_.set(index, value);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
+      private monitoring.Monitoring.KpiId kpiId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * @return Whether the kpiId field is set.
        */
-      public Builder setKpiIds(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
+      public boolean hasKpiId() {
+        return kpiIdBuilder_ != null || kpiId_ != null;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
+       * @return The kpiId.
        */
-      public Builder addKpiIds(monitoring.Monitoring.KpiId value) {
-        if (kpiIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(value);
-          onChanged();
+      public monitoring.Monitoring.KpiId getKpiId() {
+        if (kpiIdBuilder_ == null) {
+          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         } else {
-          kpiIdsBuilder_.addMessage(value);
+          return kpiIdBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder addKpiIds(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdsBuilder_ == null) {
+      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(index, value);
+          kpiId_ = value;
           onChanged();
         } else {
-          kpiIdsBuilder_.addMessage(index, value);
+          kpiIdBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder addKpiIds(
+      public Builder setKpiId(
           monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addKpiIds(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addAllKpiIds(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiIds_);
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = builderForValue.build();
           onChanged();
         } else {
-          kpiIdsBuilder_.addAllMessages(values);
+          kpiIdBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder clearKpiIds() {
-        if (kpiIdsBuilder_ == null) {
-          kpiIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+        if (kpiIdBuilder_ == null) {
+          if (kpiId_ != null) {
+            kpiId_ =
+              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+          } else {
+            kpiId_ = value;
+          }
           onChanged();
         } else {
-          kpiIdsBuilder_.clear();
+          kpiIdBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public Builder removeKpiIds(int index) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.remove(index);
+      public Builder clearKpiId() {
+        if (kpiIdBuilder_ == null) {
+          kpiId_ = null;
           onChanged();
         } else {
-          kpiIdsBuilder_.remove(index);
+          kpiId_ = null;
+          kpiIdBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdsBuilder(
-          int index) {
-        return getKpiIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(
-          int index) {
-        if (kpiIdsBuilder_ == null) {
-          return kpiIds_.get(index);  } else {
-          return kpiIdsBuilder_.getMessageOrBuilder(index);
-        }
+      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+        
+        onChanged();
+        return getKpiIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-           getKpiIdsOrBuilderList() {
-        if (kpiIdsBuilder_ != null) {
-          return kpiIdsBuilder_.getMessageOrBuilderList();
+      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+        if (kpiIdBuilder_ != null) {
+          return kpiIdBuilder_.getMessageOrBuilder();
         } else {
-          return java.util.Collections.unmodifiableList(kpiIds_);
+          return kpiId_ == null ?
+              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
       }
       /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder() {
-        return getKpiIdsFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder(
-          int index) {
-        return getKpiIdsFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+       * <code>.monitoring.KpiId kpi_id = 1;</code>
        */
-      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
-           getKpiIdsBuilderList() {
-        return getKpiIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
+      private com.google.protobuf.SingleFieldBuilderV3<
           monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdsFieldBuilder() {
-        if (kpiIdsBuilder_ == null) {
-          kpiIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+          getKpiIdFieldBuilder() {
+        if (kpiIdBuilder_ == null) {
+          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
               monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  kpiIds_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  getKpiId(),
                   getParentForChildren(),
                   isClean());
-          kpiIds_ = null;
+          kpiId_ = null;
         }
-        return kpiIdsBuilder_;
+        return kpiIdBuilder_;
       }
 
       private float monitoringWindowS_ ;
@@ -4143,13 +3809,44 @@ public final class Monitoring {
         return this;
       }
 
+      private float samplingRateS_ ;
+      /**
+       * <code>float sampling_rate_s = 3;</code>
+       * @return The samplingRateS.
+       */
+      @java.lang.Override
+      public float getSamplingRateS() {
+        return samplingRateS_;
+      }
+      /**
+       * <code>float sampling_rate_s = 3;</code>
+       * @param value The samplingRateS to set.
+       * @return This builder for chaining.
+       */
+      public Builder setSamplingRateS(float value) {
+        
+        samplingRateS_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float sampling_rate_s = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearSamplingRateS() {
+        
+        samplingRateS_ = 0F;
+        onChanged();
+        return this;
+      }
+
       private int lastNSamples_ ;
       /**
        * <pre>
        * used when you want something like "get the last N many samples
        * </pre>
        *
-       * <code>uint32 last_n_samples = 3;</code>
+       * <code>uint32 last_n_samples = 4;</code>
        * @return The lastNSamples.
        */
       @java.lang.Override
@@ -4161,7 +3858,7 @@ public final class Monitoring {
        * used when you want something like "get the last N many samples
        * </pre>
        *
-       * <code>uint32 last_n_samples = 3;</code>
+       * <code>uint32 last_n_samples = 4;</code>
        * @param value The lastNSamples to set.
        * @return This builder for chaining.
        */
@@ -4176,7 +3873,7 @@ public final class Monitoring {
        * used when you want something like "get the last N many samples
        * </pre>
        *
-       * <code>uint32 last_n_samples = 3;</code>
+       * <code>uint32 last_n_samples = 4;</code>
        * @return This builder for chaining.
        */
       public Builder clearLastNSamples() {
@@ -4194,7 +3891,7 @@ public final class Monitoring {
        * used when you want something like "get the samples since X date/time"
        * </pre>
        *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        * @return Whether the startTimestamp field is set.
        */
       public boolean hasStartTimestamp() {
@@ -4205,7 +3902,7 @@ public final class Monitoring {
        * used when you want something like "get the samples since X date/time"
        * </pre>
        *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        * @return The startTimestamp.
        */
       public context.ContextOuterClass.Timestamp getStartTimestamp() {
@@ -4220,7 +3917,7 @@ public final class Monitoring {
        * used when you want something like "get the samples since X date/time"
        * </pre>
        *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
       public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
         if (startTimestampBuilder_ == null) {
@@ -4240,7 +3937,7 @@ public final class Monitoring {
        * used when you want something like "get the samples since X date/time"
        * </pre>
        *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
       public Builder setStartTimestamp(
           context.ContextOuterClass.Timestamp.Builder builderForValue) {
@@ -4258,7 +3955,7 @@ public final class Monitoring {
        * used when you want something like "get the samples since X date/time"
        * </pre>
        *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
       public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
         if (startTimestampBuilder_ == null) {
@@ -4271,2866 +3968,229 @@ public final class Monitoring {
           onChanged();
         } else {
           startTimestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public Builder clearStartTimestamp() {
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = null;
-          onChanged();
-        } else {
-          startTimestamp_ = null;
-          startTimestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-        
-        onChanged();
-        return getStartTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-        if (startTimestampBuilder_ != null) {
-          return startTimestampBuilder_.getMessageOrBuilder();
-        } else {
-          return startTimestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getStartTimestampFieldBuilder() {
-        if (startTimestampBuilder_ == null) {
-          startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getStartTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          startTimestamp_ = null;
-        }
-        return startTimestampBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp endTimestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       * @return Whether the endTimestamp field is set.
-       */
-      public boolean hasEndTimestamp() {
-        return endTimestampBuilder_ != null || endTimestamp_ != null;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       * @return The endTimestamp.
-       */
-      public context.ContextOuterClass.Timestamp getEndTimestamp() {
-        if (endTimestampBuilder_ == null) {
-          return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-        } else {
-          return endTimestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (endTimestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endTimestamp_ = value;
-          onChanged();
-        } else {
-          endTimestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder setEndTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          endTimestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (endTimestampBuilder_ == null) {
-          if (endTimestamp_ != null) {
-            endTimestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
-          } else {
-            endTimestamp_ = value;
-          }
-          onChanged();
-        } else {
-          endTimestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder clearEndTimestamp() {
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = null;
-          onChanged();
-        } else {
-          endTimestamp_ = null;
-          endTimestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-        
-        onChanged();
-        return getEndTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-        if (endTimestampBuilder_ != null) {
-          return endTimestampBuilder_.getMessageOrBuilder();
-        } else {
-          return endTimestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getEndTimestampFieldBuilder() {
-        if (endTimestampBuilder_ == null) {
-          endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getEndTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          endTimestamp_ = null;
-        }
-        return endTimestampBuilder_;
-      }
-      @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:monitoring.KpiQuery)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.KpiQuery)
-    private static final monitoring.Monitoring.KpiQuery DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiQuery();
-    }
-
-    public static monitoring.Monitoring.KpiQuery getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser<KpiQuery>
-        PARSER = new com.google.protobuf.AbstractParser<KpiQuery>() {
-      @java.lang.Override
-      public KpiQuery parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiQuery(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiQuery> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiQuery> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface RawKpiOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.RawKpi)
-      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>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return Whether the kpiValue field is set.
-     */
-    boolean hasKpiValue();
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return The kpiValue.
-     */
-    monitoring.Monitoring.KpiValue getKpiValue();
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
-  }
-  /**
-   * <pre>
-   * cell
-   * </pre>
-   *
-   * Protobuf type {@code monitoring.RawKpi}
-   */
-  public static final class RawKpi extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.RawKpi)
-      RawKpiOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use RawKpi.newBuilder() to construct.
-    private RawKpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private RawKpi() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new RawKpi();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private RawKpi(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiValue_ != null) {
-                subBuilder = kpiValue_.toBuilder();
-              }
-              kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiValue_);
-                kpiValue_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.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 getTimestamp();
-    }
-
-    public static final int KPI_VALUE_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiValue kpiValue_;
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return Whether the kpiValue field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiValue() {
-      return kpiValue_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return The kpiValue.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiValue() {
-      return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-      return getKpiValue();
-    }
-
-    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 (kpiValue_ != null) {
-        output.writeMessage(2, getKpiValue());
-      }
-      unknownFields.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 (kpiValue_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiValue());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.RawKpi)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.RawKpi other = (monitoring.Monitoring.RawKpi) obj;
-
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (hasKpiValue() != other.hasKpiValue()) return false;
-      if (hasKpiValue()) {
-        if (!getKpiValue()
-            .equals(other.getKpiValue())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) 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();
-      }
-      if (hasKpiValue()) {
-        hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiValue().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpi 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 monitoring.Monitoring.RawKpi parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpi 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 monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpi 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(monitoring.Monitoring.RawKpi 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>
-     * cell
-     * </pre>
-     *
-     * Protobuf type {@code monitoring.RawKpi}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.RawKpi)
-        monitoring.Monitoring.RawKpiOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.RawKpi.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
-        } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpi getDefaultInstanceForType() {
-        return monitoring.Monitoring.RawKpi.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpi build() {
-        monitoring.Monitoring.RawKpi result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpi buildPartial() {
-        monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        if (kpiValueBuilder_ == null) {
-          result.kpiValue_ = kpiValue_;
-        } else {
-          result.kpiValue_ = kpiValueBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.RawKpi) {
-          return mergeFrom((monitoring.Monitoring.RawKpi)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
-        if (other == monitoring.Monitoring.RawKpi.getDefaultInstance()) return this;
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        if (other.hasKpiValue()) {
-          mergeKpiValue(other.getKpiValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        monitoring.Monitoring.RawKpi parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      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 timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <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;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        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 monitoring.Monitoring.KpiValue kpiValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       * @return Whether the kpiValue field is set.
-       */
-      public boolean hasKpiValue() {
-        return kpiValueBuilder_ != null || kpiValue_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       * @return The kpiValue.
-       */
-      public monitoring.Monitoring.KpiValue getKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-        } else {
-          return kpiValueBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiValue_ = value;
-          onChanged();
-        } else {
-          kpiValueBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder setKpiValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiValueBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (kpiValue_ != null) {
-            kpiValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiValue_ = value;
-          }
-          onChanged();
-        } else {
-          kpiValueBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder clearKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
-          onChanged();
-        } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-        
-        onChanged();
-        return getKpiValueFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-        if (kpiValueBuilder_ != null) {
-          return kpiValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiValueFieldBuilder() {
-        if (kpiValueBuilder_ == null) {
-          kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiValue_ = null;
-        }
-        return kpiValueBuilder_;
-      }
-      @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:monitoring.RawKpi)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.RawKpi)
-    private static final monitoring.Monitoring.RawKpi DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpi();
-    }
-
-    public static monitoring.Monitoring.RawKpi getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser<RawKpi>
-        PARSER = new com.google.protobuf.AbstractParser<RawKpi>() {
-      @java.lang.Override
-      public RawKpi parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new RawKpi(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<RawKpi> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<RawKpi> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpi getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface RawKpiListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.RawKpiList)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
-
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    java.util.List<monitoring.Monitoring.RawKpi> 
-        getRawKpisList();
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    monitoring.Monitoring.RawKpi getRawKpis(int index);
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    int getRawKpisCount();
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> 
-        getRawKpisOrBuilderList();
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(
-        int index);
-  }
-  /**
-   * <pre>
-   * column
-   * </pre>
-   *
-   * Protobuf type {@code monitoring.RawKpiList}
-   */
-  public static final class RawKpiList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.RawKpiList)
-      RawKpiListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use RawKpiList.newBuilder() to construct.
-    private RawKpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private RawKpiList() {
-      rawKpis_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new RawKpiList();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private RawKpiList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              rawKpis_.add(
-                  input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class);
-    }
-
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
-
-    public static final int RAW_KPIS_FIELD_NUMBER = 2;
-    private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_;
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList() {
-      return rawKpis_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> 
-        getRawKpisOrBuilderList() {
-      return rawKpis_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public int getRawKpisCount() {
-      return rawKpis_.size();
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpi getRawKpis(int index) {
-      return rawKpis_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(
-        int index) {
-      return rawKpis_.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 (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      for (int i = 0; i < rawKpis_.size(); i++) {
-        output.writeMessage(2, rawKpis_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      for (int i = 0; i < rawKpis_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, rawKpis_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.RawKpiList)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.RawKpiList other = (monitoring.Monitoring.RawKpiList) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (!getRawKpisList()
-          .equals(other.getRawKpisList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      if (getRawKpisCount() > 0) {
-        hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
-        hash = (53 * hash) + getRawKpisList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiList 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 monitoring.Monitoring.RawKpiList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiList 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 monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiList 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(monitoring.Monitoring.RawKpiList 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>
-     * column
-     * </pre>
-     *
-     * Protobuf type {@code monitoring.RawKpiList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.RawKpiList)
-        monitoring.Monitoring.RawKpiListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getRawKpisFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        if (rawKpisBuilder_ == null) {
-          rawKpis_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          rawKpisBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() {
-        return monitoring.Monitoring.RawKpiList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiList build() {
-        monitoring.Monitoring.RawKpiList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiList buildPartial() {
-        monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        if (rawKpisBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.rawKpis_ = rawKpis_;
-        } else {
-          result.rawKpis_ = rawKpisBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.RawKpiList) {
-          return mergeFrom((monitoring.Monitoring.RawKpiList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.RawKpiList other) {
-        if (other == monitoring.Monitoring.RawKpiList.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (rawKpisBuilder_ == null) {
-          if (!other.rawKpis_.isEmpty()) {
-            if (rawKpis_.isEmpty()) {
-              rawKpis_ = other.rawKpis_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureRawKpisIsMutable();
-              rawKpis_.addAll(other.rawKpis_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.rawKpis_.isEmpty()) {
-            if (rawKpisBuilder_.isEmpty()) {
-              rawKpisBuilder_.dispose();
-              rawKpisBuilder_ = null;
-              rawKpis_ = other.rawKpis_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              rawKpisBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getRawKpisFieldBuilder() : null;
-            } else {
-              rawKpisBuilder_.addAllMessages(other.rawKpis_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        monitoring.Monitoring.RawKpiList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_ =
-        java.util.Collections.emptyList();
-      private void ensureRawKpisIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>(rawKpis_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> rawKpisBuilder_;
-
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList() {
-        if (rawKpisBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(rawKpis_);
-        } else {
-          return rawKpisBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public int getRawKpisCount() {
-        if (rawKpisBuilder_ == null) {
-          return rawKpis_.size();
-        } else {
-          return rawKpisBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi getRawKpis(int index) {
-        if (rawKpisBuilder_ == null) {
-          return rawKpis_.get(index);
-        } else {
-          return rawKpisBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder setRawKpis(
-          int index, monitoring.Monitoring.RawKpi value) {
-        if (rawKpisBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpisIsMutable();
-          rawKpis_.set(index, value);
-          onChanged();
-        } else {
-          rawKpisBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder setRawKpis(
-          int index, monitoring.Monitoring.RawKpi.Builder builderForValue) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpisBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(monitoring.Monitoring.RawKpi value) {
-        if (rawKpisBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpisIsMutable();
-          rawKpis_.add(value);
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(
-          int index, monitoring.Monitoring.RawKpi value) {
-        if (rawKpisBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpisIsMutable();
-          rawKpis_.add(index, value);
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(
-          monitoring.Monitoring.RawKpi.Builder builderForValue) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.add(builderForValue.build());
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(
-          int index, monitoring.Monitoring.RawKpi.Builder builderForValue) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addAllRawKpis(
-          java.lang.Iterable<? extends monitoring.Monitoring.RawKpi> values) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, rawKpis_);
-          onChanged();
-        } else {
-          rawKpisBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder clearRawKpis() {
-        if (rawKpisBuilder_ == null) {
-          rawKpis_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          rawKpisBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder removeRawKpis(int index) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.remove(index);
-          onChanged();
-        } else {
-          rawKpisBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi.Builder getRawKpisBuilder(
-          int index) {
-        return getRawKpisFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(
-          int index) {
-        if (rawKpisBuilder_ == null) {
-          return rawKpis_.get(index);  } else {
-          return rawKpisBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> 
-           getRawKpisOrBuilderList() {
-        if (rawKpisBuilder_ != null) {
-          return rawKpisBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(rawKpis_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder() {
-        return getRawKpisFieldBuilder().addBuilder(
-            monitoring.Monitoring.RawKpi.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder(
-          int index) {
-        return getRawKpisFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.RawKpi.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public java.util.List<monitoring.Monitoring.RawKpi.Builder> 
-           getRawKpisBuilderList() {
-        return getRawKpisFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> 
-          getRawKpisFieldBuilder() {
-        if (rawKpisBuilder_ == null) {
-          rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(
-                  rawKpis_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          rawKpis_ = null;
-        }
-        return rawKpisBuilder_;
-      }
-      @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:monitoring.RawKpiList)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.RawKpiList)
-    private static final monitoring.Monitoring.RawKpiList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiList();
-    }
-
-    public static monitoring.Monitoring.RawKpiList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser<RawKpiList>
-        PARSER = new com.google.protobuf.AbstractParser<RawKpiList>() {
-      @java.lang.Override
-      public RawKpiList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new RawKpiList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<RawKpiList> parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<RawKpiList> getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
-  public interface RawKpiTableOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.RawKpiTable)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.RawKpiList> 
-        getRawKpiListsList();
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    monitoring.Monitoring.RawKpiList getRawKpiLists(int index);
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    int getRawKpiListsCount();
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> 
-        getRawKpiListsOrBuilderList();
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(
-        int index);
-  }
-  /**
-   * <pre>
-   * table
-   * </pre>
-   *
-   * Protobuf type {@code monitoring.RawKpiTable}
-   */
-  public static final class RawKpiTable extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.RawKpiTable)
-      RawKpiTableOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use RawKpiTable.newBuilder() to construct.
-    private RawKpiTable(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private RawKpiTable() {
-      rawKpiLists_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new RawKpiTable();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private RawKpiTable(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              rawKpiLists_.add(
-                  input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class);
-    }
-
-    public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_;
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList() {
-      return rawKpiLists_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> 
-        getRawKpiListsOrBuilderList() {
-      return rawKpiLists_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public int getRawKpiListsCount() {
-      return rawKpiLists_.size();
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) {
-      return rawKpiLists_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(
-        int index) {
-      return rawKpiLists_.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 < rawKpiLists_.size(); i++) {
-        output.writeMessage(1, rawKpiLists_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < rawKpiLists_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, rawKpiLists_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.RawKpiTable)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
-
-      if (!getRawKpiListsList()
-          .equals(other.getRawKpiListsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getRawKpiListsCount() > 0) {
-        hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
-        hash = (53 * hash) + getRawKpiListsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiTable 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 monitoring.Monitoring.RawKpiTable parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiTable 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 monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiTable 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(monitoring.Monitoring.RawKpiTable 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>
-     * table
-     * </pre>
-     *
-     * Protobuf type {@code monitoring.RawKpiTable}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.RawKpiTable)
-        monitoring.Monitoring.RawKpiTableOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getRawKpiListsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (rawKpiListsBuilder_ == null) {
-          rawKpiLists_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          rawKpiListsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() {
-        return monitoring.Monitoring.RawKpiTable.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiTable build() {
-        monitoring.Monitoring.RawKpiTable result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiTable buildPartial() {
-        monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
-        int from_bitField0_ = bitField0_;
-        if (rawKpiListsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.rawKpiLists_ = rawKpiLists_;
-        } else {
-          result.rawKpiLists_ = rawKpiListsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.RawKpiTable) {
-          return mergeFrom((monitoring.Monitoring.RawKpiTable)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.RawKpiTable other) {
-        if (other == monitoring.Monitoring.RawKpiTable.getDefaultInstance()) return this;
-        if (rawKpiListsBuilder_ == null) {
-          if (!other.rawKpiLists_.isEmpty()) {
-            if (rawKpiLists_.isEmpty()) {
-              rawKpiLists_ = other.rawKpiLists_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureRawKpiListsIsMutable();
-              rawKpiLists_.addAll(other.rawKpiLists_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.rawKpiLists_.isEmpty()) {
-            if (rawKpiListsBuilder_.isEmpty()) {
-              rawKpiListsBuilder_.dispose();
-              rawKpiListsBuilder_ = null;
-              rawKpiLists_ = other.rawKpiLists_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              rawKpiListsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getRawKpiListsFieldBuilder() : null;
-            } else {
-              rawKpiListsBuilder_.addAllMessages(other.rawKpiLists_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        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 {
-        monitoring.Monitoring.RawKpiTable parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_ =
-        java.util.Collections.emptyList();
-      private void ensureRawKpiListsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>(rawKpiLists_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> rawKpiListsBuilder_;
+        }
 
+        return this;
+      }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList() {
-        if (rawKpiListsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(rawKpiLists_);
+      public Builder clearStartTimestamp() {
+        if (startTimestampBuilder_ == null) {
+          startTimestamp_ = null;
+          onChanged();
         } else {
-          return rawKpiListsBuilder_.getMessageList();
+          startTimestamp_ = null;
+          startTimestampBuilder_ = null;
         }
+
+        return this;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public int getRawKpiListsCount() {
-        if (rawKpiListsBuilder_ == null) {
-          return rawKpiLists_.size();
-        } else {
-          return rawKpiListsBuilder_.getCount();
-        }
+      public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+        
+        onChanged();
+        return getStartTimestampFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) {
-        if (rawKpiListsBuilder_ == null) {
-          return rawKpiLists_.get(index);
+      public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+        if (startTimestampBuilder_ != null) {
+          return startTimestampBuilder_.getMessageOrBuilder();
         } else {
-          return rawKpiListsBuilder_.getMessage(index);
+          return startTimestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         }
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples since X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp start_timestamp = 5;</code>
        */
-      public Builder setRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList value) {
-        if (rawKpiListsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.set(index, value);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.setMessage(index, value);
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getStartTimestampFieldBuilder() {
+        if (startTimestampBuilder_ == null) {
+          startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getStartTimestamp(),
+                  getParentForChildren(),
+                  isClean());
+          startTimestamp_ = null;
         }
-        return this;
+        return startTimestampBuilder_;
       }
+
+      private context.ContextOuterClass.Timestamp endTimestamp_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       * @return Whether the endTimestamp field is set.
        */
-      public Builder setRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
+      public boolean hasEndTimestamp() {
+        return endTimestampBuilder_ != null || endTimestamp_ != null;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
+       * @return The endTimestamp.
        */
-      public Builder addRawKpiLists(monitoring.Monitoring.RawKpiList value) {
-        if (rawKpiListsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(value);
-          onChanged();
+      public context.ContextOuterClass.Timestamp getEndTimestamp() {
+        if (endTimestampBuilder_ == null) {
+          return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         } else {
-          rawKpiListsBuilder_.addMessage(value);
+          return endTimestampBuilder_.getMessage();
         }
-        return this;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public Builder addRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList value) {
-        if (rawKpiListsBuilder_ == null) {
+      public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (endTimestampBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(index, value);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addRawKpiLists(
-          monitoring.Monitoring.RawKpiList.Builder builderForValue) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(builderForValue.build());
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(index, builderForValue.build());
+          endTimestamp_ = value;
           onChanged();
         } else {
-          rawKpiListsBuilder_.addMessage(index, builderForValue.build());
+          endTimestampBuilder_.setMessage(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public Builder addAllRawKpiLists(
-          java.lang.Iterable<? extends monitoring.Monitoring.RawKpiList> values) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, rawKpiLists_);
+      public Builder setEndTimestamp(
+          context.ContextOuterClass.Timestamp.Builder builderForValue) {
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = builderForValue.build();
           onChanged();
         } else {
-          rawKpiListsBuilder_.addAllMessages(values);
+          endTimestampBuilder_.setMessage(builderForValue.build());
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public Builder clearRawKpiLists() {
-        if (rawKpiListsBuilder_ == null) {
-          rawKpiLists_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
+        if (endTimestampBuilder_ == null) {
+          if (endTimestamp_ != null) {
+            endTimestamp_ =
+              context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+          } else {
+            endTimestamp_ = value;
+          }
           onChanged();
         } else {
-          rawKpiListsBuilder_.clear();
+          endTimestampBuilder_.mergeFrom(value);
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public Builder removeRawKpiLists(int index) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.remove(index);
+      public Builder clearEndTimestamp() {
+        if (endTimestampBuilder_ == null) {
+          endTimestamp_ = null;
           onChanged();
         } else {
-          rawKpiListsBuilder_.remove(index);
+          endTimestamp_ = null;
+          endTimestampBuilder_ = null;
         }
+
         return this;
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList.Builder getRawKpiListsBuilder(
-          int index) {
-        return getRawKpiListsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(
-          int index) {
-        if (rawKpiListsBuilder_ == null) {
-          return rawKpiLists_.get(index);  } else {
-          return rawKpiListsBuilder_.getMessageOrBuilder(index);
-        }
+      public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+        
+        onChanged();
+        return getEndTimestampFieldBuilder().getBuilder();
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> 
-           getRawKpiListsOrBuilderList() {
-        if (rawKpiListsBuilder_ != null) {
-          return rawKpiListsBuilder_.getMessageOrBuilderList();
+      public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+        if (endTimestampBuilder_ != null) {
+          return endTimestampBuilder_.getMessageOrBuilder();
         } else {
-          return java.util.Collections.unmodifiableList(rawKpiLists_);
+          return endTimestamp_ == null ?
+              context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         }
       }
       /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder() {
-        return getRawKpiListsFieldBuilder().addBuilder(
-            monitoring.Monitoring.RawKpiList.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder(
-          int index) {
-        return getRawKpiListsFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.RawKpiList.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+       * <pre>
+       * used when you want something like "get the samples until X date/time"
+       * </pre>
+       *
+       * <code>.context.Timestamp end_timestamp = 6;</code>
        */
-      public java.util.List<monitoring.Monitoring.RawKpiList.Builder> 
-           getRawKpiListsBuilderList() {
-        return getRawKpiListsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> 
-          getRawKpiListsFieldBuilder() {
-        if (rawKpiListsBuilder_ == null) {
-          rawKpiListsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder>(
-                  rawKpiLists_,
-                  ((bitField0_ & 0x00000001) != 0),
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
+          getEndTimestampFieldBuilder() {
+        if (endTimestampBuilder_ == null) {
+          endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
+                  getEndTimestamp(),
                   getParentForChildren(),
                   isClean());
-          rawKpiLists_ = null;
+          endTimestamp_ = null;
         }
-        return rawKpiListsBuilder_;
+        return endTimestampBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -7145,41 +4205,41 @@ public final class Monitoring {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:monitoring.RawKpiTable)
+      // @@protoc_insertion_point(builder_scope:monitoring.KpiQuery)
     }
 
-    // @@protoc_insertion_point(class_scope:monitoring.RawKpiTable)
-    private static final monitoring.Monitoring.RawKpiTable DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:monitoring.KpiQuery)
+    private static final monitoring.Monitoring.KpiQuery DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiTable();
+      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiQuery();
     }
 
-    public static monitoring.Monitoring.RawKpiTable getDefaultInstance() {
+    public static monitoring.Monitoring.KpiQuery getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser<RawKpiTable>
-        PARSER = new com.google.protobuf.AbstractParser<RawKpiTable>() {
+    private static final com.google.protobuf.Parser<KpiQuery>
+        PARSER = new com.google.protobuf.AbstractParser<KpiQuery>() {
       @java.lang.Override
-      public RawKpiTable parsePartialFrom(
+      public KpiQuery parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new RawKpiTable(input, extensionRegistry);
+        return new KpiQuery(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser<RawKpiTable> parser() {
+    public static com.google.protobuf.Parser<KpiQuery> parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser<RawKpiTable> getParserForType() {
+    public com.google.protobuf.Parser<KpiQuery> getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() {
+    public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -21261,21 +18321,6 @@ public final class Monitoring {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_monitoring_KpiQuery_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_RawKpi_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_RawKpi_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_RawKpiList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_RawKpiList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_RawKpiTable_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_RawKpiTable_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_monitoring_KpiId_descriptor;
   private static final 
@@ -21361,7 +18406,7 @@ public final class Monitoring {
   static {
     java.lang.String[] descriptorData = {
       "\n\020monitoring.proto\022\nmonitoring\032\rcontext." +
-      "proto\032\026kpi_sample_types.proto\"\367\002\n\rKpiDes" +
+      "proto\032\026kpi_sample_types.proto\"\311\002\n\rKpiDes" +
       "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" +
       "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" +
       "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" +
@@ -21370,92 +18415,86 @@ public final class Monitoring {
       "eId\022(\n\013endpoint_id\030\006 \001(\0132\023.context.EndPo" +
       "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" +
       "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" +
-      "d\022,\n\rconnection_id\030\t \001(\0132\025.context.Conne" +
-      "ctionId\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001" +
-      " \001(\0132\021.monitoring.KpiId\022\033\n\023monitoring_wi" +
-      "ndow_s\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001" +
-      "\n\010KpiQuery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring" +
-      ".KpiId\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016l" +
-      "ast_n_samples\030\003 \001(\r\022+\n\017start_timestamp\030\004" +
-      " \001(\0132\022.context.Timestamp\022)\n\rend_timestam" +
-      "p\030\005 \001(\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n" +
-      "\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\t" +
-      "kpi_value\030\002 \001(\0132\024.monitoring.KpiValue\"U\n" +
-      "\nRawKpiList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring" +
-      ".KpiId\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.Ra" +
-      "wKpi\"<\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003" +
-      "(\0132\026.monitoring.RawKpiList\"&\n\005KpiId\022\035\n\006k" +
-      "pi_id\030\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi" +
-      "_id\030\001 \001(\0132\021.monitoring.KpiId\022%\n\ttimestam" +
-      "p\030\002 \001(\0132\022.context.Timestamp\022\'\n\tkpi_value" +
-      "\030\003 \001(\0132\024.monitoring.KpiValue\"\250\001\n\rKpiValu" +
-      "eRange\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring" +
-      ".KpiValue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitor" +
-      "ing.KpiValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017include" +
-      "MinValue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"" +
-      "\241\001\n\010KpiValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint" +
-      "32Val\030\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuin" +
-      "t64Val\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tst" +
-      "ringVal\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005va" +
-      "lue\"\'\n\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring" +
-      ".Kpi\"K\n\021KpiDescriptorList\0226\n\023kpi_descrip" +
-      "tor_list\030\001 \003(\0132\031.monitoring.KpiDescripto" +
-      "r\"\362\001\n\016SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032." +
-      "monitoring.SubscriptionID\022!\n\006kpi_id\030\002 \001(" +
-      "\0132\021.monitoring.KpiId\022\033\n\023sampling_duratio" +
-      "n_s\030\003 \001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+" +
-      "\n\017start_timestamp\030\005 \001(\0132\022.context.Timest" +
-      "amp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Tim" +
-      "estamp\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(" +
-      "\0132\r.context.Uuid\"b\n\014SubsResponse\022+\n\007subs" +
-      "_id\030\001 \001(\0132\032.monitoring.SubscriptionID\022%\n" +
-      "\010kpi_list\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010" +
-      "SubsList\0223\n\017subs_descriptor\030\001 \003(\0132\032.moni" +
-      "toring.SubsDescriptor\"\337\001\n\017AlarmDescripto" +
-      "r\022%\n\010alarm_id\030\001 \001(\0132\023.monitoring.AlarmID" +
-      "\022\031\n\021alarm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(" +
-      "\t\022!\n\006kpi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017" +
-      "kpi_value_range\030\005 \001(\0132\031.monitoring.KpiVa" +
-      "lueRange\022%\n\ttimestamp\030\006 \001(\0132\022.context.Ti" +
-      "mestamp\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.c" +
-      "ontext.Uuid\"}\n\021AlarmSubscription\022%\n\010alar" +
-      "m_id\030\001 \001(\0132\023.monitoring.AlarmID\022\036\n\026subsc" +
-      "ription_timeout_s\030\002 \001(\002\022!\n\031subscription_" +
-      "frequency_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010a" +
-      "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004te" +
-      "xt\030\002 \001(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring." +
-      "KpiList\"B\n\tAlarmList\0225\n\020alarm_descriptor" +
-      "\030\001 \003(\0132\033.monitoring.AlarmDescriptor2\234\t\n\021" +
-      "MonitoringService\0228\n\006SetKpi\022\031.monitoring" +
-      ".KpiDescriptor\032\021.monitoring.KpiId\"\000\0220\n\tD" +
-      "eleteKpi\022\021.monitoring.KpiId\032\016.context.Em" +
-      "pty\"\000\022B\n\020GetKpiDescriptor\022\021.monitoring.K" +
-      "piId\032\031.monitoring.KpiDescriptor\"\000\022G\n\024Get" +
-      "KpiDescriptorList\022\016.context.Empty\032\035.moni" +
-      "toring.KpiDescriptorList\"\000\022/\n\nIncludeKpi" +
-      "\022\017.monitoring.Kpi\032\016.context.Empty\"\000\022=\n\nM" +
-      "onitorKpi\022\035.monitoring.MonitorKpiRequest" +
-      "\032\016.context.Empty\"\000\022?\n\014QueryKpiData\022\024.mon" +
-      "itoring.KpiQuery\032\027.monitoring.RawKpiTabl" +
-      "e\"\000\022N\n\022SetKpiSubscription\022\032.monitoring.S" +
-      "ubsDescriptor\032\030.monitoring.SubsResponse\"" +
-      "\0000\001\022M\n\021GetSubsDescriptor\022\032.monitoring.Su" +
-      "bscriptionID\032\032.monitoring.SubsDescriptor" +
-      "\"\000\022:\n\020GetSubscriptions\022\016.context.Empty\032\024" +
-      ".monitoring.SubsList\"\000\022B\n\022DeleteSubscrip" +
-      "tion\022\032.monitoring.SubscriptionID\032\016.conte" +
-      "xt.Empty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.A" +
-      "larmDescriptor\032\023.monitoring.AlarmID\"\000\0224\n" +
-      "\tGetAlarms\022\016.context.Empty\032\025.monitoring." +
-      "AlarmList\"\000\022H\n\022GetAlarmDescriptor\022\023.moni" +
-      "toring.AlarmID\032\033.monitoring.AlarmDescrip" +
-      "tor\"\000\022V\n\026GetAlarmResponseStream\022\035.monito" +
-      "ring.AlarmSubscription\032\031.monitoring.Alar" +
-      "mResponse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitorin" +
-      "g.AlarmID\032\016.context.Empty\"\000\0226\n\014GetStream" +
-      "Kpi\022\021.monitoring.KpiId\032\017.monitoring.Kpi\"" +
-      "\0000\001\0225\n\rGetInstantKpi\022\021.monitoring.KpiId\032" +
-      "\017.monitoring.Kpi\"\000b\006proto3"
+      "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" +
+      ".monitoring.KpiId\022\033\n\023monitoring_window_s" +
+      "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\323\001\n\010KpiQ" +
+      "uery\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId\022" +
+      "\033\n\023monitoring_window_s\030\002 \001(\002\022\027\n\017sampling" +
+      "_rate_s\030\003 \001(\002\022\026\n\016last_n_samples\030\004 \001(\r\022+\n" +
+      "\017start_timestamp\030\005 \001(\0132\022.context.Timesta" +
+      "mp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Time" +
+      "stamp\"&\n\005KpiId\022\035\n\006kpi_id\030\001 \001(\0132\r.context" +
+      ".Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 \001(\0132\021.monitorin" +
+      "g.KpiId\022%\n\ttimestamp\030\002 \001(\0132\022.context.Tim" +
+      "estamp\022\'\n\tkpi_value\030\003 \001(\0132\024.monitoring.K" +
+      "piValue\"\250\001\n\rKpiValueRange\022)\n\013kpiMinValue" +
+      "\030\001 \001(\0132\024.monitoring.KpiValue\022)\n\013kpiMaxVa" +
+      "lue\030\002 \001(\0132\024.monitoring.KpiValue\022\017\n\007inRan" +
+      "ge\030\003 \001(\010\022\027\n\017includeMinValue\030\004 \001(\010\022\027\n\017inc" +
+      "ludeMaxValue\030\005 \001(\010\"\241\001\n\010KpiValue\022\022\n\010int32" +
+      "Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030\002 \001(\rH\000\022\022\n\010int6" +
+      "4Val\030\003 \001(\003H\000\022\023\n\tuint64Val\030\004 \001(\004H\000\022\022\n\010flo" +
+      "atVal\030\005 \001(\002H\000\022\023\n\tstringVal\030\006 \001(\tH\000\022\021\n\007bo" +
+      "olVal\030\007 \001(\010H\000B\007\n\005value\"\'\n\007KpiList\022\034\n\003kpi" +
+      "\030\001 \003(\0132\017.monitoring.Kpi\"K\n\021KpiDescriptor" +
+      "List\0226\n\023kpi_descriptor_list\030\001 \003(\0132\031.moni" +
+      "toring.KpiDescriptor\"\362\001\n\016SubsDescriptor\022" +
+      "+\n\007subs_id\030\001 \001(\0132\032.monitoring.Subscripti" +
+      "onID\022!\n\006kpi_id\030\002 \001(\0132\021.monitoring.KpiId\022" +
+      "\033\n\023sampling_duration_s\030\003 \001(\002\022\033\n\023sampling" +
+      "_interval_s\030\004 \001(\002\022+\n\017start_timestamp\030\005 \001" +
+      "(\0132\022.context.Timestamp\022)\n\rend_timestamp\030" +
+      "\006 \001(\0132\022.context.Timestamp\"0\n\016Subscriptio" +
+      "nID\022\036\n\007subs_id\030\001 \001(\0132\r.context.Uuid\"b\n\014S" +
+      "ubsResponse\022+\n\007subs_id\030\001 \001(\0132\032.monitorin" +
+      "g.SubscriptionID\022%\n\010kpi_list\030\002 \001(\0132\023.mon" +
+      "itoring.KpiList\"?\n\010SubsList\0223\n\017subs_desc" +
+      "riptor\030\001 \003(\0132\032.monitoring.SubsDescriptor" +
+      "\"\337\001\n\017AlarmDescriptor\022%\n\010alarm_id\030\001 \001(\0132\023" +
+      ".monitoring.AlarmID\022\031\n\021alarm_description" +
+      "\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006kpi_id\030\004 \001(\0132\021.m" +
+      "onitoring.KpiId\0222\n\017kpi_value_range\030\005 \001(\013" +
+      "2\031.monitoring.KpiValueRange\022%\n\ttimestamp" +
+      "\030\006 \001(\0132\022.context.Timestamp\"*\n\007AlarmID\022\037\n" +
+      "\010alarm_id\030\001 \001(\0132\r.context.Uuid\"}\n\021AlarmS" +
+      "ubscription\022%\n\010alarm_id\030\001 \001(\0132\023.monitori" +
+      "ng.AlarmID\022\036\n\026subscription_timeout_s\030\002 \001" +
+      "(\002\022!\n\031subscription_frequency_ms\030\003 \001(\002\"k\n" +
+      "\rAlarmResponse\022%\n\010alarm_id\030\001 \001(\0132\023.monit" +
+      "oring.AlarmID\022\014\n\004text\030\002 \001(\t\022%\n\010kpi_list\030" +
+      "\003 \001(\0132\023.monitoring.KpiList\"B\n\tAlarmList\022" +
+      "5\n\020alarm_descriptor\030\001 \003(\0132\033.monitoring.A" +
+      "larmDescriptor2\230\t\n\021MonitoringService\0228\n\006" +
+      "SetKpi\022\031.monitoring.KpiDescriptor\032\021.moni" +
+      "toring.KpiId\"\000\0220\n\tDeleteKpi\022\021.monitoring" +
+      ".KpiId\032\016.context.Empty\"\000\022B\n\020GetKpiDescri" +
+      "ptor\022\021.monitoring.KpiId\032\031.monitoring.Kpi" +
+      "Descriptor\"\000\022G\n\024GetKpiDescriptorList\022\016.c" +
+      "ontext.Empty\032\035.monitoring.KpiDescriptorL" +
+      "ist\"\000\022/\n\nIncludeKpi\022\017.monitoring.Kpi\032\016.c" +
+      "ontext.Empty\"\000\022=\n\nMonitorKpi\022\035.monitorin" +
+      "g.MonitorKpiRequest\032\016.context.Empty\"\000\022;\n" +
+      "\014QueryKpiData\022\024.monitoring.KpiQuery\032\023.mo" +
+      "nitoring.KpiList\"\000\022N\n\022SetKpiSubscription" +
+      "\022\032.monitoring.SubsDescriptor\032\030.monitorin" +
+      "g.SubsResponse\"\0000\001\022M\n\021GetSubsDescriptor\022" +
+      "\032.monitoring.SubscriptionID\032\032.monitoring" +
+      ".SubsDescriptor\"\000\022:\n\020GetSubscriptions\022\016." +
+      "context.Empty\032\024.monitoring.SubsList\"\000\022B\n" +
+      "\022DeleteSubscription\022\032.monitoring.Subscri" +
+      "ptionID\032\016.context.Empty\"\000\022A\n\013SetKpiAlarm" +
+      "\022\033.monitoring.AlarmDescriptor\032\023.monitori" +
+      "ng.AlarmID\"\000\0224\n\tGetAlarms\022\016.context.Empt" +
+      "y\032\025.monitoring.AlarmList\"\000\022H\n\022GetAlarmDe" +
+      "scriptor\022\023.monitoring.AlarmID\032\033.monitori" +
+      "ng.AlarmDescriptor\"\000\022V\n\026GetAlarmResponse" +
+      "Stream\022\035.monitoring.AlarmSubscription\032\031." +
+      "monitoring.AlarmResponse\"\0000\001\0224\n\013DeleteAl" +
+      "arm\022\023.monitoring.AlarmID\032\016.context.Empty" +
+      "\"\000\0226\n\014GetStreamKpi\022\021.monitoring.KpiId\032\017." +
+      "monitoring.Kpi\"\0000\001\0225\n\rGetInstantKpi\022\021.mo" +
+      "nitoring.KpiId\032\017.monitoring.Kpi\"\000b\006proto" +
+      "3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -21468,7 +18507,7 @@ public final class Monitoring {
     internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiDescriptor_descriptor,
-        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", });
+        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", });
     internal_static_monitoring_MonitorKpiRequest_descriptor =
       getDescriptor().getMessageTypes().get(1);
     internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new
@@ -21480,111 +18519,93 @@ public final class Monitoring {
     internal_static_monitoring_KpiQuery_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiQuery_descriptor,
-        new java.lang.String[] { "KpiIds", "MonitoringWindowS", "LastNSamples", "StartTimestamp", "EndTimestamp", });
-    internal_static_monitoring_RawKpi_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_monitoring_RawKpi_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_RawKpi_descriptor,
-        new java.lang.String[] { "Timestamp", "KpiValue", });
-    internal_static_monitoring_RawKpiList_descriptor =
-      getDescriptor().getMessageTypes().get(4);
-    internal_static_monitoring_RawKpiList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_RawKpiList_descriptor,
-        new java.lang.String[] { "KpiId", "RawKpis", });
-    internal_static_monitoring_RawKpiTable_descriptor =
-      getDescriptor().getMessageTypes().get(5);
-    internal_static_monitoring_RawKpiTable_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_RawKpiTable_descriptor,
-        new java.lang.String[] { "RawKpiLists", });
+        new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS", "LastNSamples", "StartTimestamp", "EndTimestamp", });
     internal_static_monitoring_KpiId_descriptor =
-      getDescriptor().getMessageTypes().get(6);
+      getDescriptor().getMessageTypes().get(3);
     internal_static_monitoring_KpiId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiId_descriptor,
         new java.lang.String[] { "KpiId", });
     internal_static_monitoring_Kpi_descriptor =
-      getDescriptor().getMessageTypes().get(7);
+      getDescriptor().getMessageTypes().get(4);
     internal_static_monitoring_Kpi_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_Kpi_descriptor,
         new java.lang.String[] { "KpiId", "Timestamp", "KpiValue", });
     internal_static_monitoring_KpiValueRange_descriptor =
-      getDescriptor().getMessageTypes().get(8);
+      getDescriptor().getMessageTypes().get(5);
     internal_static_monitoring_KpiValueRange_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiValueRange_descriptor,
         new java.lang.String[] { "KpiMinValue", "KpiMaxValue", "InRange", "IncludeMinValue", "IncludeMaxValue", });
     internal_static_monitoring_KpiValue_descriptor =
-      getDescriptor().getMessageTypes().get(9);
+      getDescriptor().getMessageTypes().get(6);
     internal_static_monitoring_KpiValue_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiValue_descriptor,
         new java.lang.String[] { "Int32Val", "Uint32Val", "Int64Val", "Uint64Val", "FloatVal", "StringVal", "BoolVal", "Value", });
     internal_static_monitoring_KpiList_descriptor =
-      getDescriptor().getMessageTypes().get(10);
+      getDescriptor().getMessageTypes().get(7);
     internal_static_monitoring_KpiList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiList_descriptor,
         new java.lang.String[] { "Kpi", });
     internal_static_monitoring_KpiDescriptorList_descriptor =
-      getDescriptor().getMessageTypes().get(11);
+      getDescriptor().getMessageTypes().get(8);
     internal_static_monitoring_KpiDescriptorList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiDescriptorList_descriptor,
         new java.lang.String[] { "KpiDescriptorList", });
     internal_static_monitoring_SubsDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(12);
+      getDescriptor().getMessageTypes().get(9);
     internal_static_monitoring_SubsDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubsDescriptor_descriptor,
         new java.lang.String[] { "SubsId", "KpiId", "SamplingDurationS", "SamplingIntervalS", "StartTimestamp", "EndTimestamp", });
     internal_static_monitoring_SubscriptionID_descriptor =
-      getDescriptor().getMessageTypes().get(13);
+      getDescriptor().getMessageTypes().get(10);
     internal_static_monitoring_SubscriptionID_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubscriptionID_descriptor,
         new java.lang.String[] { "SubsId", });
     internal_static_monitoring_SubsResponse_descriptor =
-      getDescriptor().getMessageTypes().get(14);
+      getDescriptor().getMessageTypes().get(11);
     internal_static_monitoring_SubsResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubsResponse_descriptor,
         new java.lang.String[] { "SubsId", "KpiList", });
     internal_static_monitoring_SubsList_descriptor =
-      getDescriptor().getMessageTypes().get(15);
+      getDescriptor().getMessageTypes().get(12);
     internal_static_monitoring_SubsList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_SubsList_descriptor,
         new java.lang.String[] { "SubsDescriptor", });
     internal_static_monitoring_AlarmDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(16);
+      getDescriptor().getMessageTypes().get(13);
     internal_static_monitoring_AlarmDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmDescriptor_descriptor,
         new java.lang.String[] { "AlarmId", "AlarmDescription", "Name", "KpiId", "KpiValueRange", "Timestamp", });
     internal_static_monitoring_AlarmID_descriptor =
-      getDescriptor().getMessageTypes().get(17);
+      getDescriptor().getMessageTypes().get(14);
     internal_static_monitoring_AlarmID_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmID_descriptor,
         new java.lang.String[] { "AlarmId", });
     internal_static_monitoring_AlarmSubscription_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(15);
     internal_static_monitoring_AlarmSubscription_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmSubscription_descriptor,
         new java.lang.String[] { "AlarmId", "SubscriptionTimeoutS", "SubscriptionFrequencyMs", });
     internal_static_monitoring_AlarmResponse_descriptor =
-      getDescriptor().getMessageTypes().get(19);
+      getDescriptor().getMessageTypes().get(16);
     internal_static_monitoring_AlarmResponse_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmResponse_descriptor,
         new java.lang.String[] { "AlarmId", "Text", "KpiList", });
     internal_static_monitoring_AlarmList_descriptor =
-      getDescriptor().getMessageTypes().get(20);
+      getDescriptor().getMessageTypes().get(17);
     internal_static_monitoring_AlarmList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_AlarmList_descriptor,
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java
index 0ce30559b2c0a1bb6236431482d6b99b82cf0842..e43e9174c6eee81e5c5faf4a2d3049848f01b041 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringService.java
@@ -20,7 +20,7 @@ public interface MonitoringService extends MutinyService {
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request);
     
-    io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request);
+    io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request);
     
     io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request);
     
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
index cbc984e7132bdbf22c9b99a510106c5c6f4cbda7..83c1b9cd108886f5b54248c5c9861ec9f5c2fabf 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
@@ -64,7 +64,7 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
        try {
          return delegate.queryKpiData(request);
        } catch (UnsupportedOperationException e) {
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
index 0e8ff5d1b8929694b49548984cd7d53f9c8f68a4..fc16b2b9bfb19c27fd6ff593e4d2311017b9286b 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
@@ -45,7 +45,7 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient<
        return stub.monitorKpi(request);
     }
     @Override
-    public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+    public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
        return stub.queryKpiData(request);
     }
     @Override
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index c5f55b3b44c03ea8f5377ce11e3c3e547da5ef06..9f3d85f72f78afca40e60c7439c84b61b1976d55 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -201,28 +201,28 @@ public final class MonitoringServiceGrpc {
   }
 
   private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery,
-      monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod;
+      monitoring.Monitoring.KpiList> getQueryKpiDataMethod;
 
   @io.grpc.stub.annotations.RpcMethod(
       fullMethodName = SERVICE_NAME + '/' + "QueryKpiData",
       requestType = monitoring.Monitoring.KpiQuery.class,
-      responseType = monitoring.Monitoring.RawKpiTable.class,
+      responseType = monitoring.Monitoring.KpiList.class,
       methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
   public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery,
-      monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod;
+      monitoring.Monitoring.KpiList> getQueryKpiDataMethod() {
+    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.KpiList> getQueryKpiDataMethod;
     if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) {
       synchronized (MonitoringServiceGrpc.class) {
         if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) {
           MonitoringServiceGrpc.getQueryKpiDataMethod = getQueryKpiDataMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>newBuilder()
+              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.KpiList>newBuilder()
               .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
               .setFullMethodName(generateFullMethodName(SERVICE_NAME, "QueryKpiData"))
               .setSampledToLocalTracing(true)
               .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
                   monitoring.Monitoring.KpiQuery.getDefaultInstance()))
               .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.RawKpiTable.getDefaultInstance()))
+                  monitoring.Monitoring.KpiList.getDefaultInstance()))
               .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("QueryKpiData"))
               .build();
         }
@@ -665,7 +665,7 @@ public final class MonitoringServiceGrpc {
     /**
      */
     public void queryKpiData(monitoring.Monitoring.KpiQuery request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList> responseObserver) {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
     }
 
@@ -795,7 +795,7 @@ public final class MonitoringServiceGrpc {
             io.grpc.stub.ServerCalls.asyncUnaryCall(
               new MethodHandlers<
                 monitoring.Monitoring.KpiQuery,
-                monitoring.Monitoring.RawKpiTable>(
+                monitoring.Monitoring.KpiList>(
                   this, METHODID_QUERY_KPI_DATA)))
           .addMethod(
             getSetKpiSubscriptionMethod(),
@@ -943,7 +943,7 @@ public final class MonitoringServiceGrpc {
     /**
      */
     public void queryKpiData(monitoring.Monitoring.KpiQuery request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
+        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList> responseObserver) {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
           getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request, responseObserver);
     }
@@ -1095,7 +1095,7 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public monitoring.Monitoring.RawKpiTable queryKpiData(monitoring.Monitoring.KpiQuery request) {
+    public monitoring.Monitoring.KpiList queryKpiData(monitoring.Monitoring.KpiQuery request) {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
           getChannel(), getQueryKpiDataMethod(), getCallOptions(), request);
     }
@@ -1245,7 +1245,7 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.RawKpiTable> queryKpiData(
+    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiList> queryKpiData(
         monitoring.Monitoring.KpiQuery request) {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
           getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request);
@@ -1378,7 +1378,7 @@ public final class MonitoringServiceGrpc {
           break;
         case METHODID_QUERY_KPI_DATA:
           serviceImpl.queryKpiData((monitoring.Monitoring.KpiQuery) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable>) responseObserver);
+              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver);
           break;
         case METHODID_SET_KPI_SUBSCRIPTION:
           serviceImpl.setKpiSubscription((monitoring.Monitoring.SubsDescriptor) request,
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java b/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
index f045ecc7ed434ba90bdfda065f18e0d839850a76..8f066682b996e236be1d14cc65b80d1b8984804f 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
@@ -66,7 +66,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::queryKpiData);
         }
 
@@ -173,7 +173,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         }
 
         
-        public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+        public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiList> queryKpiData(monitoring.Monitoring.KpiQuery request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
@@ -281,7 +281,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                             asyncUnaryCall(
                                     new MethodHandlers<
                                             monitoring.Monitoring.KpiQuery,
-                                            monitoring.Monitoring.RawKpiTable>(
+                                            monitoring.Monitoring.KpiList>(
                                             this, METHODID_QUERY_KPI_DATA, compression)))
                     .addMethod(
                             monitoring.MonitoringServiceGrpc.getSetKpiSubscriptionMethod(),
@@ -440,7 +440,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
                     break;
                 case METHODID_QUERY_KPI_DATA:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiQuery) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable>) responseObserver,
+                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiList>) responseObserver,
                             compression,
                             serviceImpl::queryKpiData);
                     break;
diff --git a/src/policy/target/generated-sources/grpc/policy/Policy.java b/src/policy/target/generated-sources/grpc/policy/Policy.java
index 505c0d7ff98d573e67f8cf39b399ec8ab9b30b68..0fb9c004aba385973770c0f0c448b60341f7e63c 100644
--- a/src/policy/target/generated-sources/grpc/policy/Policy.java
+++ b/src/policy/target/generated-sources/grpc/policy/Policy.java
@@ -9641,27 +9641,27 @@ public final class Policy {
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
-    java.util.List<policy.Policy.PolicyRule> 
+    java.util.List<policy.Policy.PolicyRuleId> 
         getPolicyRulesList();
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
-    policy.Policy.PolicyRule getPolicyRules(int index);
+    policy.Policy.PolicyRuleId getPolicyRules(int index);
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
     int getPolicyRulesCount();
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
-    java.util.List<? extends policy.Policy.PolicyRuleOrBuilder> 
+    java.util.List<? extends policy.Policy.PolicyRuleIdOrBuilder> 
         getPolicyRulesOrBuilderList();
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
-    policy.Policy.PolicyRuleOrBuilder getPolicyRulesOrBuilder(
+    policy.Policy.PolicyRuleIdOrBuilder getPolicyRulesOrBuilder(
         int index);
   }
   /**
@@ -9717,11 +9717,11 @@ public final class Policy {
               break;
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                policyRules_ = new java.util.ArrayList<policy.Policy.PolicyRule>();
+                policyRules_ = new java.util.ArrayList<policy.Policy.PolicyRuleId>();
                 mutable_bitField0_ |= 0x00000001;
               }
               policyRules_.add(
-                  input.readMessage(policy.Policy.PolicyRule.parser(), extensionRegistry));
+                  input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -9760,41 +9760,41 @@ public final class Policy {
     }
 
     public static final int POLICYRULES_FIELD_NUMBER = 1;
-    private java.util.List<policy.Policy.PolicyRule> policyRules_;
+    private java.util.List<policy.Policy.PolicyRuleId> policyRules_;
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<policy.Policy.PolicyRule> getPolicyRulesList() {
+    public java.util.List<policy.Policy.PolicyRuleId> getPolicyRulesList() {
       return policyRules_;
     }
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends policy.Policy.PolicyRuleOrBuilder> 
+    public java.util.List<? extends policy.Policy.PolicyRuleIdOrBuilder> 
         getPolicyRulesOrBuilderList() {
       return policyRules_;
     }
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
     @java.lang.Override
     public int getPolicyRulesCount() {
       return policyRules_.size();
     }
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
     @java.lang.Override
-    public policy.Policy.PolicyRule getPolicyRules(int index) {
+    public policy.Policy.PolicyRuleId getPolicyRules(int index) {
       return policyRules_.get(index);
     }
     /**
-     * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+     * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
      */
     @java.lang.Override
-    public policy.Policy.PolicyRuleOrBuilder getPolicyRulesOrBuilder(
+    public policy.Policy.PolicyRuleIdOrBuilder getPolicyRulesOrBuilder(
         int index) {
       return policyRules_.get(index);
     }
@@ -10145,22 +10145,22 @@ public final class Policy {
       }
       private int bitField0_;
 
-      private java.util.List<policy.Policy.PolicyRule> policyRules_ =
+      private java.util.List<policy.Policy.PolicyRuleId> policyRules_ =
         java.util.Collections.emptyList();
       private void ensurePolicyRulesIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          policyRules_ = new java.util.ArrayList<policy.Policy.PolicyRule>(policyRules_);
+          policyRules_ = new java.util.ArrayList<policy.Policy.PolicyRuleId>(policyRules_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          policy.Policy.PolicyRule, policy.Policy.PolicyRule.Builder, policy.Policy.PolicyRuleOrBuilder> policyRulesBuilder_;
+          policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleId.Builder, policy.Policy.PolicyRuleIdOrBuilder> policyRulesBuilder_;
 
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public java.util.List<policy.Policy.PolicyRule> getPolicyRulesList() {
+      public java.util.List<policy.Policy.PolicyRuleId> getPolicyRulesList() {
         if (policyRulesBuilder_ == null) {
           return java.util.Collections.unmodifiableList(policyRules_);
         } else {
@@ -10168,7 +10168,7 @@ public final class Policy {
         }
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public int getPolicyRulesCount() {
         if (policyRulesBuilder_ == null) {
@@ -10178,9 +10178,9 @@ public final class Policy {
         }
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public policy.Policy.PolicyRule getPolicyRules(int index) {
+      public policy.Policy.PolicyRuleId getPolicyRules(int index) {
         if (policyRulesBuilder_ == null) {
           return policyRules_.get(index);
         } else {
@@ -10188,10 +10188,10 @@ public final class Policy {
         }
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder setPolicyRules(
-          int index, policy.Policy.PolicyRule value) {
+          int index, policy.Policy.PolicyRuleId value) {
         if (policyRulesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -10205,10 +10205,10 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder setPolicyRules(
-          int index, policy.Policy.PolicyRule.Builder builderForValue) {
+          int index, policy.Policy.PolicyRuleId.Builder builderForValue) {
         if (policyRulesBuilder_ == null) {
           ensurePolicyRulesIsMutable();
           policyRules_.set(index, builderForValue.build());
@@ -10219,9 +10219,9 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public Builder addPolicyRules(policy.Policy.PolicyRule value) {
+      public Builder addPolicyRules(policy.Policy.PolicyRuleId value) {
         if (policyRulesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -10235,10 +10235,10 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder addPolicyRules(
-          int index, policy.Policy.PolicyRule value) {
+          int index, policy.Policy.PolicyRuleId value) {
         if (policyRulesBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -10252,10 +10252,10 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder addPolicyRules(
-          policy.Policy.PolicyRule.Builder builderForValue) {
+          policy.Policy.PolicyRuleId.Builder builderForValue) {
         if (policyRulesBuilder_ == null) {
           ensurePolicyRulesIsMutable();
           policyRules_.add(builderForValue.build());
@@ -10266,10 +10266,10 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder addPolicyRules(
-          int index, policy.Policy.PolicyRule.Builder builderForValue) {
+          int index, policy.Policy.PolicyRuleId.Builder builderForValue) {
         if (policyRulesBuilder_ == null) {
           ensurePolicyRulesIsMutable();
           policyRules_.add(index, builderForValue.build());
@@ -10280,10 +10280,10 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder addAllPolicyRules(
-          java.lang.Iterable<? extends policy.Policy.PolicyRule> values) {
+          java.lang.Iterable<? extends policy.Policy.PolicyRuleId> values) {
         if (policyRulesBuilder_ == null) {
           ensurePolicyRulesIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -10295,7 +10295,7 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder clearPolicyRules() {
         if (policyRulesBuilder_ == null) {
@@ -10308,7 +10308,7 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
       public Builder removePolicyRules(int index) {
         if (policyRulesBuilder_ == null) {
@@ -10321,16 +10321,16 @@ public final class Policy {
         return this;
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public policy.Policy.PolicyRule.Builder getPolicyRulesBuilder(
+      public policy.Policy.PolicyRuleId.Builder getPolicyRulesBuilder(
           int index) {
         return getPolicyRulesFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public policy.Policy.PolicyRuleOrBuilder getPolicyRulesOrBuilder(
+      public policy.Policy.PolicyRuleIdOrBuilder getPolicyRulesOrBuilder(
           int index) {
         if (policyRulesBuilder_ == null) {
           return policyRules_.get(index);  } else {
@@ -10338,9 +10338,9 @@ public final class Policy {
         }
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public java.util.List<? extends policy.Policy.PolicyRuleOrBuilder> 
+      public java.util.List<? extends policy.Policy.PolicyRuleIdOrBuilder> 
            getPolicyRulesOrBuilderList() {
         if (policyRulesBuilder_ != null) {
           return policyRulesBuilder_.getMessageOrBuilderList();
@@ -10349,33 +10349,33 @@ public final class Policy {
         }
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public policy.Policy.PolicyRule.Builder addPolicyRulesBuilder() {
+      public policy.Policy.PolicyRuleId.Builder addPolicyRulesBuilder() {
         return getPolicyRulesFieldBuilder().addBuilder(
-            policy.Policy.PolicyRule.getDefaultInstance());
+            policy.Policy.PolicyRuleId.getDefaultInstance());
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public policy.Policy.PolicyRule.Builder addPolicyRulesBuilder(
+      public policy.Policy.PolicyRuleId.Builder addPolicyRulesBuilder(
           int index) {
         return getPolicyRulesFieldBuilder().addBuilder(
-            index, policy.Policy.PolicyRule.getDefaultInstance());
+            index, policy.Policy.PolicyRuleId.getDefaultInstance());
       }
       /**
-       * <code>repeated .policy.PolicyRule policyRules = 1;</code>
+       * <code>repeated .policy.PolicyRuleId policyRules = 1;</code>
        */
-      public java.util.List<policy.Policy.PolicyRule.Builder> 
+      public java.util.List<policy.Policy.PolicyRuleId.Builder> 
            getPolicyRulesBuilderList() {
         return getPolicyRulesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          policy.Policy.PolicyRule, policy.Policy.PolicyRule.Builder, policy.Policy.PolicyRuleOrBuilder> 
+          policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleId.Builder, policy.Policy.PolicyRuleIdOrBuilder> 
           getPolicyRulesFieldBuilder() {
         if (policyRulesBuilder_ == null) {
           policyRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              policy.Policy.PolicyRule, policy.Policy.PolicyRule.Builder, policy.Policy.PolicyRuleOrBuilder>(
+              policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleId.Builder, policy.Policy.PolicyRuleIdOrBuilder>(
                   policyRules_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -10524,30 +10524,30 @@ public final class Policy {
       "viceList\030\001 \003(\0132\031.policy.PolicyRuleServic" +
       "e\"N\n\024PolicyRuleDeviceList\0226\n\024policyRuleD" +
       "eviceList\030\001 \003(\0132\030.policy.PolicyRuleDevic" +
-      "e\"9\n\016PolicyRuleList\022\'\n\013policyRules\030\001 \003(\013" +
-      "2\022.policy.PolicyRule*\377\001\n\023PolicyRuleState" +
-      "Enum\022\024\n\020POLICY_UNDEFINED\020\000\022\021\n\rPOLICY_FAI" +
-      "LED\020\001\022\023\n\017POLICY_INSERTED\020\002\022\024\n\020POLICY_VAL" +
-      "IDATED\020\003\022\026\n\022POLICY_PROVISIONED\020\004\022\021\n\rPOLI" +
-      "CY_ACTIVE\020\005\022\023\n\017POLICY_ENFORCED\020\006\022\026\n\022POLI" +
-      "CY_INEFFECTIVE\020\007\022\024\n\020POLICY_EFFECTIVE\020\010\022\022" +
-      "\n\016POLICY_UPDATED\020\t\022\022\n\016POLICY_REMOVED\020\n2\323" +
-      "\004\n\rPolicyService\022H\n\020PolicyAddService\022\031.p" +
-      "olicy.PolicyRuleService\032\027.policy.PolicyR" +
-      "uleState\"\000\022F\n\017PolicyAddDevice\022\030.policy.P" +
-      "olicyRuleDevice\032\027.policy.PolicyRuleState" +
-      "\"\000\022K\n\023PolicyUpdateService\022\031.policy.Polic" +
-      "yRuleService\032\027.policy.PolicyRuleState\"\000\022" +
-      "I\n\022PolicyUpdateDevice\022\030.policy.PolicyRul" +
-      "eDevice\032\027.policy.PolicyRuleState\"\000\022?\n\014Po" +
-      "licyDelete\022\024.policy.PolicyRuleId\032\027.polic" +
-      "y.PolicyRuleState\"\000\022E\n\020GetPolicyService\022" +
-      "\024.policy.PolicyRuleId\032\031.policy.PolicyRul" +
-      "eService\"\000\022C\n\017GetPolicyDevice\022\024.policy.P" +
-      "olicyRuleId\032\030.policy.PolicyRuleDevice\"\000\022" +
-      "K\n\024GetPolicyByServiceId\022\022.context.Servic" +
-      "eId\032\035.policy.PolicyRuleServiceList\"\000b\006pr" +
-      "oto3"
+      "e\";\n\016PolicyRuleList\022)\n\013policyRules\030\001 \003(\013" +
+      "2\024.policy.PolicyRuleId*\377\001\n\023PolicyRuleSta" +
+      "teEnum\022\024\n\020POLICY_UNDEFINED\020\000\022\021\n\rPOLICY_F" +
+      "AILED\020\001\022\023\n\017POLICY_INSERTED\020\002\022\024\n\020POLICY_V" +
+      "ALIDATED\020\003\022\026\n\022POLICY_PROVISIONED\020\004\022\021\n\rPO" +
+      "LICY_ACTIVE\020\005\022\023\n\017POLICY_ENFORCED\020\006\022\026\n\022PO" +
+      "LICY_INEFFECTIVE\020\007\022\024\n\020POLICY_EFFECTIVE\020\010" +
+      "\022\022\n\016POLICY_UPDATED\020\t\022\022\n\016POLICY_REMOVED\020\n" +
+      "2\323\004\n\rPolicyService\022H\n\020PolicyAddService\022\031" +
+      ".policy.PolicyRuleService\032\027.policy.Polic" +
+      "yRuleState\"\000\022F\n\017PolicyAddDevice\022\030.policy" +
+      ".PolicyRuleDevice\032\027.policy.PolicyRuleSta" +
+      "te\"\000\022K\n\023PolicyUpdateService\022\031.policy.Pol" +
+      "icyRuleService\032\027.policy.PolicyRuleState\"" +
+      "\000\022I\n\022PolicyUpdateDevice\022\030.policy.PolicyR" +
+      "uleDevice\032\027.policy.PolicyRuleState\"\000\022?\n\014" +
+      "PolicyDelete\022\024.policy.PolicyRuleId\032\027.pol" +
+      "icy.PolicyRuleState\"\000\022E\n\020GetPolicyServic" +
+      "e\022\024.policy.PolicyRuleId\032\031.policy.PolicyR" +
+      "uleService\"\000\022C\n\017GetPolicyDevice\022\024.policy" +
+      ".PolicyRuleId\032\030.policy.PolicyRuleDevice\"" +
+      "\000\022K\n\024GetPolicyByServiceId\022\022.context.Serv" +
+      "iceId\032\035.policy.PolicyRuleServiceList\"\000b\006" +
+      "proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyAction.java b/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
index c79a3487bb3a6d9c9cffab185da605a15366f0d4..f7d7c71cd5e51a0685e0503c51ce7003aced8f05 100644
--- a/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
+++ b/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
@@ -35,14 +35,6 @@ public final class PolicyAction {
      * <code>POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT = 3;</code>
      */
     POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT(3),
-    /**
-     * <code>POLICY_RULE_ACTION_CALL_SERVICE_RPC = 4;</code>
-     */
-    POLICY_RULE_ACTION_CALL_SERVICE_RPC(4),
-    /**
-     * <code>POLICY_RULE_ACTION_RECALCULATE_PATH = 5;</code>
-     */
-    POLICY_RULE_ACTION_RECALCULATE_PATH(5),
     UNRECOGNIZED(-1),
     ;
 
@@ -62,14 +54,6 @@ public final class PolicyAction {
      * <code>POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT = 3;</code>
      */
     public static final int POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT_VALUE = 3;
-    /**
-     * <code>POLICY_RULE_ACTION_CALL_SERVICE_RPC = 4;</code>
-     */
-    public static final int POLICY_RULE_ACTION_CALL_SERVICE_RPC_VALUE = 4;
-    /**
-     * <code>POLICY_RULE_ACTION_RECALCULATE_PATH = 5;</code>
-     */
-    public static final int POLICY_RULE_ACTION_RECALCULATE_PATH_VALUE = 5;
 
 
     public final int getNumber() {
@@ -100,8 +84,6 @@ public final class PolicyAction {
         case 1: return POLICYRULE_ACTION_SET_DEVICE_STATUS;
         case 2: return POLICYRULE_ACTION_ADD_SERVICE_CONFIGRULE;
         case 3: return POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT;
-        case 4: return POLICY_RULE_ACTION_CALL_SERVICE_RPC;
-        case 5: return POLICY_RULE_ACTION_RECALCULATE_PATH;
         default: return null;
       }
     }
@@ -1816,14 +1798,12 @@ public final class PolicyAction {
       "yRuleActionEnum\0225\n\raction_config\030\002 \003(\0132\036" +
       ".policy.PolicyRuleActionConfig\"B\n\026Policy" +
       "RuleActionConfig\022\022\n\naction_key\030\001 \001(\t\022\024\n\014" +
-      "action_value\030\002 \001(\t*\216\002\n\024PolicyRuleActionE" +
+      "action_value\030\002 \001(\t*\274\001\n\024PolicyRuleActionE" +
       "num\022\037\n\033POLICYRULE_ACTION_NO_ACTION\020\000\022\'\n#" +
       "POLICYRULE_ACTION_SET_DEVICE_STATUS\020\001\022,\n" +
       "(POLICYRULE_ACTION_ADD_SERVICE_CONFIGRUL" +
       "E\020\002\022,\n(POLICYRULE_ACTION_ADD_SERVICE_CON" +
-      "STRAINT\020\003\022\'\n#POLICY_RULE_ACTION_CALL_SER" +
-      "VICE_RPC\020\004\022\'\n#POLICY_RULE_ACTION_RECALCU" +
-      "LATE_PATH\020\005b\006proto3"
+      "STRAINT\020\003b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/policy/target/generated-sources/grpc/service/MutinyServiceServiceGrpc.java b/src/policy/target/generated-sources/grpc/service/MutinyServiceServiceGrpc.java
index cc94512929b34d0f3ddf427be5cb5655d774479b..8caa9641d654e5b0f3e07635b366684d8ab5f980 100644
--- a/src/policy/target/generated-sources/grpc/service/MutinyServiceServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/service/MutinyServiceServiceGrpc.java
@@ -50,11 +50,6 @@ public final class MutinyServiceServiceGrpc implements io.quarkus.grpc.runtime.M
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteService);
         }
 
-        
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> recomputeConnections(context.ContextOuterClass.Service request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::recomputeConnections);
-        }
-
     }
 
     
@@ -87,11 +82,6 @@ public final class MutinyServiceServiceGrpc implements io.quarkus.grpc.runtime.M
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
-        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> recomputeConnections(context.ContextOuterClass.Service request) {
-            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-        }
-
         @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
             return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
                     .addMethod(
@@ -115,13 +105,6 @@ public final class MutinyServiceServiceGrpc implements io.quarkus.grpc.runtime.M
                                             context.ContextOuterClass.ServiceId,
                                             context.ContextOuterClass.Empty>(
                                             this, METHODID_DELETE_SERVICE, compression)))
-                    .addMethod(
-                            service.ServiceServiceGrpc.getRecomputeConnectionsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Service,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_RECOMPUTE_CONNECTIONS, compression)))
                     .build();
         }
     }
@@ -129,7 +112,6 @@ public final class MutinyServiceServiceGrpc implements io.quarkus.grpc.runtime.M
     private static final int METHODID_CREATE_SERVICE = 0;
     private static final int METHODID_UPDATE_SERVICE = 1;
     private static final int METHODID_DELETE_SERVICE = 2;
-    private static final int METHODID_RECOMPUTE_CONNECTIONS = 3;
 
     private static final class MethodHandlers<Req, Resp> implements
             io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -168,12 +150,6 @@ public final class MutinyServiceServiceGrpc implements io.quarkus.grpc.runtime.M
                             compression,
                             serviceImpl::deleteService);
                     break;
-                case METHODID_RECOMPUTE_CONNECTIONS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Service) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::recomputeConnections);
-                    break;
                 default:
                     throw new java.lang.AssertionError();
             }
diff --git a/src/policy/target/generated-sources/grpc/service/Service.java b/src/policy/target/generated-sources/grpc/service/Service.java
index aa9280357d820220c97d0baa18e1fb4f74a00804..32393a23714ffd1c1aa69d0909a3ffe7bc876146 100644
--- a/src/policy/target/generated-sources/grpc/service/Service.java
+++ b/src/policy/target/generated-sources/grpc/service/Service.java
@@ -24,13 +24,11 @@ public final class Service {
   static {
     java.lang.String[] descriptorData = {
       "\n\rservice.proto\022\007service\032\rcontext.proto2" +
-      "\365\001\n\016ServiceService\0227\n\rCreateService\022\020.co" +
+      "\271\001\n\016ServiceService\0227\n\rCreateService\022\020.co" +
       "ntext.Service\032\022.context.ServiceId\"\000\0227\n\rU" +
       "pdateService\022\020.context.Service\032\022.context" +
       ".ServiceId\"\000\0225\n\rDeleteService\022\022.context." +
-      "ServiceId\032\016.context.Empty\"\000\022:\n\024Recompute" +
-      "Connections\022\020.context.Service\032\016.context." +
-      "Empty\"\000b\006proto3"
+      "ServiceId\032\016.context.Empty\"\000b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/policy/target/generated-sources/grpc/service/ServiceService.java b/src/policy/target/generated-sources/grpc/service/ServiceService.java
index 531c92ce66bd4084e9db441bef0660acb0461d98..b51f2353623b201978b84ff8587553a8ef606b51 100644
--- a/src/policy/target/generated-sources/grpc/service/ServiceService.java
+++ b/src/policy/target/generated-sources/grpc/service/ServiceService.java
@@ -14,8 +14,6 @@ public interface ServiceService extends MutinyService {
     
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteService(context.ContextOuterClass.ServiceId request);
     
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> recomputeConnections(context.ContextOuterClass.Service request);
-    
     
     
 
diff --git a/src/policy/target/generated-sources/grpc/service/ServiceServiceBean.java b/src/policy/target/generated-sources/grpc/service/ServiceServiceBean.java
index 433a8149b102dd72c1cbf61e2fe6dca9fb3bc838..a4c34aaa82129ae725d7b2ff7abeff7dc6c159cc 100644
--- a/src/policy/target/generated-sources/grpc/service/ServiceServiceBean.java
+++ b/src/policy/target/generated-sources/grpc/service/ServiceServiceBean.java
@@ -39,13 +39,5 @@ public class ServiceServiceBean extends MutinyServiceServiceGrpc.ServiceServiceI
           throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
        }
     }
-    @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> recomputeConnections(context.ContextOuterClass.Service request) {
-       try {
-         return delegate.recomputeConnections(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
-    }
 
 }
\ No newline at end of file
diff --git a/src/policy/target/generated-sources/grpc/service/ServiceServiceClient.java b/src/policy/target/generated-sources/grpc/service/ServiceServiceClient.java
index 50063b344e4f87a0dd3966af60a5c945639c57d3..91522d4779a6ee7c85c9589588ea7cc0cba39efc 100644
--- a/src/policy/target/generated-sources/grpc/service/ServiceServiceClient.java
+++ b/src/policy/target/generated-sources/grpc/service/ServiceServiceClient.java
@@ -32,9 +32,5 @@ public class ServiceServiceClient implements ServiceService, MutinyClient<Mutiny
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteService(context.ContextOuterClass.ServiceId request) {
        return stub.deleteService(request);
     }
-    @Override
-    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> recomputeConnections(context.ContextOuterClass.Service request) {
-       return stub.recomputeConnections(request);
-    }
 
 }
\ No newline at end of file
diff --git a/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java b/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java
index 5b926a2af71c4d2e7e83d4ef3c2723b8ca7e3a8f..66419a93bacee7dad02d302044b8024e8ed12154 100644
--- a/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java
@@ -107,37 +107,6 @@ public final class ServiceServiceGrpc {
     return getDeleteServiceMethod;
   }
 
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Service,
-      context.ContextOuterClass.Empty> getRecomputeConnectionsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RecomputeConnections",
-      requestType = context.ContextOuterClass.Service.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Service,
-      context.ContextOuterClass.Empty> getRecomputeConnectionsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.Empty> getRecomputeConnectionsMethod;
-    if ((getRecomputeConnectionsMethod = ServiceServiceGrpc.getRecomputeConnectionsMethod) == null) {
-      synchronized (ServiceServiceGrpc.class) {
-        if ((getRecomputeConnectionsMethod = ServiceServiceGrpc.getRecomputeConnectionsMethod) == null) {
-          ServiceServiceGrpc.getRecomputeConnectionsMethod = getRecomputeConnectionsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Service, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RecomputeConnections"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Service.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ServiceServiceMethodDescriptorSupplier("RecomputeConnections"))
-              .build();
-        }
-      }
-    }
-    return getRecomputeConnectionsMethod;
-  }
-
   /**
    * Creates a new async stub that supports all call types for the service
    */
@@ -207,13 +176,6 @@ public final class ServiceServiceGrpc {
       io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteServiceMethod(), responseObserver);
     }
 
-    /**
-     */
-    public void recomputeConnections(context.ContextOuterClass.Service request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRecomputeConnectionsMethod(), responseObserver);
-    }
-
     @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
       return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
           .addMethod(
@@ -237,13 +199,6 @@ public final class ServiceServiceGrpc {
                 context.ContextOuterClass.ServiceId,
                 context.ContextOuterClass.Empty>(
                   this, METHODID_DELETE_SERVICE)))
-          .addMethod(
-            getRecomputeConnectionsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Service,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_RECOMPUTE_CONNECTIONS)))
           .build();
     }
   }
@@ -285,14 +240,6 @@ public final class ServiceServiceGrpc {
       io.grpc.stub.ClientCalls.asyncUnaryCall(
           getChannel().newCall(getDeleteServiceMethod(), getCallOptions()), request, responseObserver);
     }
-
-    /**
-     */
-    public void recomputeConnections(context.ContextOuterClass.Service request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRecomputeConnectionsMethod(), getCallOptions()), request, responseObserver);
-    }
   }
 
   /**
@@ -329,13 +276,6 @@ public final class ServiceServiceGrpc {
       return io.grpc.stub.ClientCalls.blockingUnaryCall(
           getChannel(), getDeleteServiceMethod(), getCallOptions(), request);
     }
-
-    /**
-     */
-    public context.ContextOuterClass.Empty recomputeConnections(context.ContextOuterClass.Service request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRecomputeConnectionsMethod(), getCallOptions(), request);
-    }
   }
 
   /**
@@ -375,20 +315,11 @@ public final class ServiceServiceGrpc {
       return io.grpc.stub.ClientCalls.futureUnaryCall(
           getChannel().newCall(getDeleteServiceMethod(), getCallOptions()), request);
     }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> recomputeConnections(
-        context.ContextOuterClass.Service request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRecomputeConnectionsMethod(), getCallOptions()), request);
-    }
   }
 
   private static final int METHODID_CREATE_SERVICE = 0;
   private static final int METHODID_UPDATE_SERVICE = 1;
   private static final int METHODID_DELETE_SERVICE = 2;
-  private static final int METHODID_RECOMPUTE_CONNECTIONS = 3;
 
   private static final class MethodHandlers<Req, Resp> implements
       io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
@@ -419,10 +350,6 @@ public final class ServiceServiceGrpc {
           serviceImpl.deleteService((context.ContextOuterClass.ServiceId) request,
               (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
           break;
-        case METHODID_RECOMPUTE_CONNECTIONS:
-          serviceImpl.recomputeConnections((context.ContextOuterClass.Service) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
         default:
           throw new AssertionError();
       }
@@ -487,7 +414,6 @@ public final class ServiceServiceGrpc {
               .addMethod(getCreateServiceMethod())
               .addMethod(getUpdateServiceMethod())
               .addMethod(getDeleteServiceMethod())
-              .addMethod(getRecomputeConnectionsMethod())
               .build();
         }
       }
diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml
index 2596c927789d90644af3e328a527b81e4e5f53e5..f1079230f5e5efb75fb14d6cd6f3ad3fb5c9d2e3 100644
--- a/src/policy/target/kubernetes/kubernetes.yml
+++ b/src/policy/target/kubernetes/kubernetes.yml
@@ -1,10 +1,23 @@
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 ---
 apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 9cfdce17b1ec690dff54c7b2ac624dfe4f7427d9
-    app.quarkus.io/build-timestamp: 2023-06-05 - 03:32:50 +0000
+    app.quarkus.io/commit-id: 23832f2975e3c8967e9685f7e3a5f5458d04527a
+    app.quarkus.io/build-timestamp: 2023-04-04 - 11:56:04 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -15,10 +28,10 @@ metadata:
   name: policyservice
 spec:
   ports:
-    - name: metrics
+    - name: http
       port: 9192
       targetPort: 8080
-    - name: grpc
+    - name: grpc-server
       port: 6060
       targetPort: 6060
   selector:
@@ -29,8 +42,8 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 9cfdce17b1ec690dff54c7b2ac624dfe4f7427d9
-    app.quarkus.io/build-timestamp: 2023-06-05 - 03:32:50 +0000
+    app.quarkus.io/commit-id: 23832f2975e3c8967e9685f7e3a5f5458d04527a
+    app.quarkus.io/build-timestamp: 2023-04-04 - 11:56:04 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -47,8 +60,8 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: 9cfdce17b1ec690dff54c7b2ac624dfe4f7427d9
-        app.quarkus.io/build-timestamp: 2023-06-05 - 03:32:50 +0000
+        app.quarkus.io/commit-id: 23832f2975e3c8967e9685f7e3a5f5458d04527a
+        app.quarkus.io/build-timestamp: 2023-04-04 - 11:56:04 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"
@@ -63,12 +76,12 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
-            - name: SERVICE_SERVICE_HOST
-              value: serviceservice
-            - name: CONTEXT_SERVICE_HOST
-              value: contextservice
             - name: MONITORING_SERVICE_HOST
               value: monitoringservice
+            - name: CONTEXT_SERVICE_HOST
+              value: contextservice
+            - name: SERVICE_SERVICE_HOST
+              value: serviceservice
           image: labs.etsi.org:5050/tfs/controller/policy:0.1.0
           imagePullPolicy: Always
           livenessProbe:
@@ -83,11 +96,11 @@ spec:
             timeoutSeconds: 10
           name: policyservice
           ports:
-            - containerPort: 6060
-              name: grpc
-              protocol: TCP
             - containerPort: 8080
-              name: metrics
+              name: http
+              protocol: TCP
+            - containerPort: 6060
+              name: grpc-server
               protocol: TCP
           readinessProbe:
             failureThreshold: 3
@@ -100,28 +113,9 @@ spec:
             successThreshold: 1
             timeoutSeconds: 10
           resources:
-            requests:
-              cpu: 50m
-              memory: 512Mi
             limits:
               cpu: 500m
               memory: 2048Mi
----
-apiVersion: autoscaling/v2
-kind: HorizontalPodAutoscaler
-metadata:
-  name: policyservice-hpa
-spec:
-  scaleTargetRef:
-    apiVersion: apps/v1
-    kind: Deployment
-    name: policyservice
-  minReplicas: 1
-  maxReplicas: 10
-  metrics:
-  - type: Resource
-    resource:
-      name: cpu
-      target:
-        type: Utilization
-        averageUtilization: 80
+            requests:
+              cpu: 50m
+              memory: 512Mi