Add feature type TYPE_INTERNAL_KILL_SWITCH

Change-Id: I766aada0cad3666e8f61180e4a2f5af2ed77fdb6
diff --git a/frontend/src/api_proto/kill_switch_grpc_web_pb.js b/frontend/src/api_proto/kill_switch_grpc_web_pb.js
index 0c5f28a..47aeb29 100644
--- a/frontend/src/api_proto/kill_switch_grpc_web_pb.js
+++ b/frontend/src/api_proto/kill_switch_grpc_web_pb.js
@@ -4,7 +4,11 @@
  * @public
  */
 
-// GENERATED CODE -- DO NOT EDIT!
+// Code generated by protoc-gen-grpc-web. DO NOT EDIT.
+// versions:
+// 	protoc-gen-grpc-web v1.4.2
+// 	protoc              v3.21.12
+// source: api_proto/kill_switch.proto
 
 
 /* eslint-disable */
@@ -24,7 +28,7 @@
 /**
  * @param {string} hostname
  * @param {?Object} credentials
- * @param {?Object} options
+ * @param {?grpc.web.ClientOptions} options
  * @constructor
  * @struct
  * @final
@@ -32,7 +36,7 @@
 proto.KillSwitchServiceClient =
     function(hostname, credentials, options) {
   if (!options) options = {};
-  options['format'] = 'text';
+  options.format = 'text';
 
   /**
    * @private @const {!grpc.web.GrpcWebClientBase} The client
@@ -42,7 +46,7 @@
   /**
    * @private @const {string} The hostname
    */
-  this.hostname_ = hostname;
+  this.hostname_ = hostname.replace(/\/+$/, '');
 
 };
 
@@ -50,7 +54,7 @@
 /**
  * @param {string} hostname
  * @param {?Object} credentials
- * @param {?Object} options
+ * @param {?grpc.web.ClientOptions} options
  * @constructor
  * @struct
  * @final
@@ -58,7 +62,7 @@
 proto.KillSwitchServicePromiseClient =
     function(hostname, credentials, options) {
   if (!options) options = {};
-  options['format'] = 'text';
+  options.format = 'text';
 
   /**
    * @private @const {!grpc.web.GrpcWebClientBase} The client
@@ -68,7 +72,7 @@
   /**
    * @private @const {string} The hostname
    */
-  this.hostname_ = hostname;
+  this.hostname_ = hostname.replace(/\/+$/, '');
 
 };
 
@@ -96,30 +100,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.GetKillSwitchStatusRequest,
- *   !proto.GetKillSwitchStatusResponse>}
- */
-const methodInfo_KillSwitchService_GetKillSwitchStatus = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.GetKillSwitchStatusResponse,
-  /**
-   * @param {!proto.GetKillSwitchStatusRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.GetKillSwitchStatusResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.GetKillSwitchStatusRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.GetKillSwitchStatusResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.GetKillSwitchStatusResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.GetKillSwitchStatusResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -138,7 +123,7 @@
 /**
  * @param {!proto.GetKillSwitchStatusRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.GetKillSwitchStatusResponse>}
  *     Promise that resolves to the response
@@ -176,30 +161,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.GetKillSwitchOverviewRequest,
- *   !proto.GetKillSwitchOverviewResponse>}
- */
-const methodInfo_KillSwitchService_GetKillSwitchOverview = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.GetKillSwitchOverviewResponse,
-  /**
-   * @param {!proto.GetKillSwitchOverviewRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.GetKillSwitchOverviewResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.GetKillSwitchOverviewRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.GetKillSwitchOverviewResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.GetKillSwitchOverviewResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.GetKillSwitchOverviewResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -218,7 +184,7 @@
 /**
  * @param {!proto.GetKillSwitchOverviewRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.GetKillSwitchOverviewResponse>}
  *     Promise that resolves to the response
@@ -256,30 +222,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.ListFeaturesRequest,
- *   !proto.ListFeaturesResponse>}
- */
-const methodInfo_KillSwitchService_ListFeatures = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.ListFeaturesResponse,
-  /**
-   * @param {!proto.ListFeaturesRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.ListFeaturesResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.ListFeaturesRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.ListFeaturesResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.ListFeaturesResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.ListFeaturesResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -298,7 +245,7 @@
 /**
  * @param {!proto.ListFeaturesRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.ListFeaturesResponse>}
  *     Promise that resolves to the response
@@ -336,30 +283,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.SyncFeaturesRequest,
- *   !proto.SyncFeaturesResponse>}
- */
-const methodInfo_KillSwitchService_SyncFeatures = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.SyncFeaturesResponse,
-  /**
-   * @param {!proto.SyncFeaturesRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.SyncFeaturesResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.SyncFeaturesRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.SyncFeaturesResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.SyncFeaturesResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.SyncFeaturesResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -378,7 +306,7 @@
 /**
  * @param {!proto.SyncFeaturesRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.SyncFeaturesResponse>}
  *     Promise that resolves to the response
@@ -416,30 +344,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.EnableKillSwitchRequest,
- *   !proto.EnableKillSwitchResponse>}
- */
-const methodInfo_KillSwitchService_EnableKillSwitch = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.EnableKillSwitchResponse,
-  /**
-   * @param {!proto.EnableKillSwitchRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.EnableKillSwitchResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.EnableKillSwitchRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.EnableKillSwitchResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.EnableKillSwitchResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.EnableKillSwitchResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -458,7 +367,7 @@
 /**
  * @param {!proto.EnableKillSwitchRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.EnableKillSwitchResponse>}
  *     Promise that resolves to the response
@@ -496,30 +405,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.DisableKillSwitchRequest,
- *   !proto.DisableKillSwitchResponse>}
- */
-const methodInfo_KillSwitchService_DisableKillSwitch = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.DisableKillSwitchResponse,
-  /**
-   * @param {!proto.DisableKillSwitchRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.DisableKillSwitchResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.DisableKillSwitchRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.DisableKillSwitchResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.DisableKillSwitchResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.DisableKillSwitchResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -538,7 +428,7 @@
 /**
  * @param {!proto.DisableKillSwitchRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.DisableKillSwitchResponse>}
  *     Promise that resolves to the response
@@ -576,30 +466,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.ListAuthorizedUsersRequest,
- *   !proto.ListAuthorizedUsersResponse>}
- */
-const methodInfo_KillSwitchService_ListAuthorizedUsers = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.ListAuthorizedUsersResponse,
-  /**
-   * @param {!proto.ListAuthorizedUsersRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.ListAuthorizedUsersResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.ListAuthorizedUsersRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.ListAuthorizedUsersResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.ListAuthorizedUsersResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.ListAuthorizedUsersResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -618,7 +489,7 @@
 /**
  * @param {!proto.ListAuthorizedUsersRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.ListAuthorizedUsersResponse>}
  *     Promise that resolves to the response
@@ -656,30 +527,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.AddAuthorizedUserRequest,
- *   !proto.AddAuthorizedUserResponse>}
- */
-const methodInfo_KillSwitchService_AddAuthorizedUser = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.AddAuthorizedUserResponse,
-  /**
-   * @param {!proto.AddAuthorizedUserRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.AddAuthorizedUserResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.AddAuthorizedUserRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.AddAuthorizedUserResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.AddAuthorizedUserResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.AddAuthorizedUserResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -698,7 +550,7 @@
 /**
  * @param {!proto.AddAuthorizedUserRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.AddAuthorizedUserResponse>}
  *     Promise that resolves to the response
@@ -736,30 +588,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.UpdateAuthorizedUserRequest,
- *   !proto.UpdateAuthorizedUserResponse>}
- */
-const methodInfo_KillSwitchService_UpdateAuthorizedUser = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.UpdateAuthorizedUserResponse,
-  /**
-   * @param {!proto.UpdateAuthorizedUserRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.UpdateAuthorizedUserResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.UpdateAuthorizedUserRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.UpdateAuthorizedUserResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.UpdateAuthorizedUserResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.UpdateAuthorizedUserResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -778,7 +611,7 @@
 /**
  * @param {!proto.UpdateAuthorizedUserRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.UpdateAuthorizedUserResponse>}
  *     Promise that resolves to the response
@@ -816,30 +649,11 @@
 
 
 /**
- * @const
- * @type {!grpc.web.AbstractClientBase.MethodInfo<
- *   !proto.DeleteAuthorizedUserRequest,
- *   !proto.DeleteAuthorizedUserResponse>}
- */
-const methodInfo_KillSwitchService_DeleteAuthorizedUser = new grpc.web.AbstractClientBase.MethodInfo(
-  proto.DeleteAuthorizedUserResponse,
-  /**
-   * @param {!proto.DeleteAuthorizedUserRequest} request
-   * @return {!Uint8Array}
-   */
-  function(request) {
-    return request.serializeBinary();
-  },
-  proto.DeleteAuthorizedUserResponse.deserializeBinary
-);
-
-
-/**
  * @param {!proto.DeleteAuthorizedUserRequest} request The
  *     request proto
  * @param {?Object<string, string>} metadata User defined
  *     call metadata
- * @param {function(?grpc.web.Error, ?proto.DeleteAuthorizedUserResponse)}
+ * @param {function(?grpc.web.RpcError, ?proto.DeleteAuthorizedUserResponse)}
  *     callback The callback function(error, response)
  * @return {!grpc.web.ClientReadableStream<!proto.DeleteAuthorizedUserResponse>|undefined}
  *     The XHR Node Readable Stream
@@ -858,7 +672,7 @@
 /**
  * @param {!proto.DeleteAuthorizedUserRequest} request The
  *     request proto
- * @param {?Object<string, string>} metadata User defined
+ * @param {?Object<string, string>=} metadata User defined
  *     call metadata
  * @return {!Promise<!proto.DeleteAuthorizedUserResponse>}
  *     Promise that resolves to the response