diff --git a/.gitignore b/.gitignore index d75a0a6..d56b8bb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,9 @@ !/bin/.gitkeep .build .idea - +cert **/*.log .DS_Store -**/*.syso \ No newline at end of file +**/*.syso +node_modules \ No newline at end of file diff --git a/Makefile b/Makefile index 87daac6..2520081 100644 --- a/Makefile +++ b/Makefile @@ -18,11 +18,15 @@ GOBUILDSRV=CGO_ENABLED=1 go build -ldflags "-s -w" -trimpath -tags $(TAGS) .PHONY: protos protos: - protoc --go_out=config --go-grpc_out=config --proto_path=protos protos/*.proto + protoc --go_out=./ --go-grpc_out=./ --proto_path=hiddifyrpc hiddifyrpc/*.proto + protoc --js_out=import_style=commonjs,binary:./extension/html/rpc/ --grpc-web_out=import_style=commonjs,mode=grpcwebtext:./extension/html/rpc/ --proto_path=hiddifyrpc hiddifyrpc/*.proto + npx browserify extension/html/rpc/extension.js >extension/html/rpc.js + lib_install: go install -v github.com/sagernet/gomobile/cmd/gomobile@v0.1.1 go install -v github.com/sagernet/gomobile/cmd/gobind@v0.1.1 + npm install headers: go build -buildmode=c-archive -o $(BINDIR)/$(LIBNAME).h ./custom @@ -93,8 +97,6 @@ macos-universal: macos-amd64 macos-arm64 clean: rm $(BINDIR)/* -build_protobuf: - protoc --go_out=. --go-grpc_out=. hiddifyrpc/hiddify.proto diff --git a/cmd/cmd_extension.go b/cmd/cmd_extension.go new file mode 100644 index 0000000..b953b3a --- /dev/null +++ b/cmd/cmd_extension.go @@ -0,0 +1,127 @@ +package cmd + +import ( + "context" + "fmt" + "log" + "net/http" + "os" + "os/signal" + "sync" + "syscall" + "time" + + _ "github.com/hiddify/hiddify-core/extension_repository" + "github.com/hiddify/hiddify-core/utils" + v2 "github.com/hiddify/hiddify-core/v2" + "github.com/improbable-eng/grpc-web/go/grpcweb" + "github.com/spf13/cobra" + "google.golang.org/grpc" +) + +var extension_id string + +var commandExtension = &cobra.Command{ + Use: "extension", + Short: "extension configuration", + Args: cobra.MaximumNArgs(2), + Run: func(cmd *cobra.Command, args []string) { + grpc_server, _ := v2.StartCoreGrpcServer("127.0.0.1:12345") + fmt.Printf("Waiting for CTRL+C to stop\n") + runWebserver(grpc_server) + <-time.After(1 * time.Second) + }, +} + +func init() { + // commandWarp.Flags().StringVarP(&warpKey, "key", "k", "", "warp key") + mainCommand.AddCommand(commandExtension) +} + +func allowCors(resp http.ResponseWriter, req *http.Request) { + resp.Header().Set("Access-Control-Allow-Origin", "*") + resp.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS") + resp.Header().Set("Access-Control-Allow-Headers", "Content-Type") + if req.Method == "OPTIONS" { + resp.WriteHeader(http.StatusOK) + return + } +} + +func runWebserver(grpcServer *grpc.Server) { + // Context for cancellation + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // Channels to signal termination + grpcTerminated := make(chan struct{}) + grpcWebTerminated := make(chan struct{}) + + // Specify the directory to serve static files + dir := "./extension/html/" + + // Wrapping gRPC server with grpc-web + grpcWeb := grpcweb.WrapServer(grpcServer) + + // HTTP multiplexer + mux := http.NewServeMux() + mux.HandleFunc("/", func(resp http.ResponseWriter, req *http.Request) { + allowCors(resp, req) + if grpcWeb.IsGrpcWebRequest(req) || grpcWeb.IsAcceptableGrpcCorsRequest(req) { + grpcWeb.ServeHTTP(resp, req) + } else { + http.DefaultServeMux.ServeHTTP(resp, req) + } + }) + + // File server for static files + fs := http.FileServer(http.Dir(dir)) + http.Handle("/", http.StripPrefix("/", fs)) + + // HTTP server for grpc-web + rpcWebServer := &http.Server{ + Handler: mux, + Addr: ":12346", + } + log.Println("Serving grpc-web from https://localhost:12346/") + + // Add a goroutine for the grpc-web server + wg := sync.WaitGroup{} + wg.Add(1) + + go func() { + defer wg.Done() + utils.GenerateCertificate("cert/server-cert.pem", "cert/server-key.pem", true, true) + if err := rpcWebServer.ListenAndServeTLS("cert/server-cert.pem", "cert/server-key.pem"); err != nil && err != http.ErrServerClosed { + // if err := rpcWebServer.ListenAndServe(); err != nil && err != http.ErrServerClosed { + fmt.Printf("Web server (gRPC-web) shutdown with error: %s", err) + } + grpcServer.Stop() + close(grpcWebTerminated) // Server terminated + }() + + // Signal handling to gracefully shutdown + sigChan := make(chan os.Signal, 1) + signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) + + select { + case <-ctx.Done(): // Context canceled + log.Println("Context canceled, shutting down servers...") + case sig := <-sigChan: // OS signal received + log.Printf("Received signal: %s, shutting down servers...", sig) + case <-grpcTerminated: // Unexpected gRPC termination + log.Println("gRPC server terminated unexpectedly") + case <-grpcWebTerminated: // Unexpected gRPC-web termination + log.Println("gRPC-web server terminated unexpectedly") + } + + // Graceful shutdown of the servers + if err := rpcWebServer.Shutdown(ctx); err != nil { + log.Printf("gRPC-web server shutdown with error: %s", err) + } + <-grpcWebTerminated + + // Ensure all routines finish + wg.Wait() + log.Println("Server shutdown complete") +} diff --git a/cmd/cmd_gen_cert.go b/cmd/cmd_gen_cert.go index 3d62a47..cd78289 100644 --- a/cmd/cmd_gen_cert.go +++ b/cmd/cmd_gen_cert.go @@ -11,11 +11,11 @@ var commandGenerateCertification = &cobra.Command{ Use: "gen-cert", Short: "Generate certification for web server", Run: func(cmd *cobra.Command, args []string) { - err := os.MkdirAll("cert", 0644) + err := os.MkdirAll("cert", 0o644) if err != nil { panic("Error: " + err.Error()) } - utils.GenerateCertificate("cert/server-cert.pem", "cert/server-key.pem", true) - utils.GenerateCertificate("cert/client-cert.pem", "cert/client-key.pem", false) + utils.GenerateCertificate("cert/server-cert.pem", "cert/server-key.pem", true, true) + utils.GenerateCertificate("cert/client-cert.pem", "cert/client-key.pem", false, true) }, } diff --git a/extension/extension.go b/extension/extension.go new file mode 100644 index 0000000..55b90fa --- /dev/null +++ b/extension/extension.go @@ -0,0 +1,86 @@ +package extension + +import ( + "fmt" + "log" + + "github.com/hiddify/hiddify-core/extension/ui_elements" + pb "github.com/hiddify/hiddify-core/hiddifyrpc" +) + +var ( + extensionsMap = make(map[string]*Extension) + extensionStatusMap = make(map[string]bool) +) + +type Extension interface { + GetTitle() string + GetDescription() string + GetUI() ui_elements.Form + SubmitData(data map[string]string) error + Cancel() error + Stop() error + UpdateUI(form ui_elements.Form) error + init(id string) + getQueue() chan *pb.ExtensionResponse + getId() string +} + +type BaseExtension struct { + id string + // responseStream grpc.ServerStreamingServer[pb.ExtensionResponse] + queue chan *pb.ExtensionResponse +} + +// func (b *BaseExtension) mustEmbdedBaseExtension() { +// } + +func (b *BaseExtension) init(id string) { + b.id = id + b.queue = make(chan *pb.ExtensionResponse, 1) +} + +func (b *BaseExtension) getQueue() chan *pb.ExtensionResponse { + return b.queue +} + +func (b *BaseExtension) getId() string { + return b.id +} + +func (p *BaseExtension) UpdateUI(form ui_elements.Form) error { + p.queue <- &pb.ExtensionResponse{ + ExtensionId: p.id, + Type: pb.ExtensionResponseType_UPDATE_UI, + JsonUi: form.ToJSON(), + } + return nil +} + +func (p *BaseExtension) ShowDialog(form ui_elements.Form) error { + p.queue <- &pb.ExtensionResponse{ + ExtensionId: p.id, + Type: pb.ExtensionResponseType_SHOW_DIALOG, + JsonUi: form.ToJSON(), + } + // log.Printf("Updated UI for extension %s: %s", err, p.id) + return nil +} + +func RegisterExtension(id string, extension Extension) error { + if _, ok := extensionsMap[id]; ok { + err := fmt.Errorf("Extension with ID %s already exists", id) + log.Fatal(err) + return err + } + if val, ok := extensionStatusMap[id]; ok && !val { + err := fmt.Errorf("Extension with ID %s is not enabled", id) + log.Fatal(err) + return err + } + extension.init(id) + + fmt.Printf("Registered extension: %+v\n", extension) + extensionsMap[id] = &extension + return nil +} diff --git a/extension/extension_host.go b/extension/extension_host.go new file mode 100644 index 0000000..09437f9 --- /dev/null +++ b/extension/extension_host.go @@ -0,0 +1,139 @@ +package extension + +import ( + "context" + "fmt" + "log" + + pb "github.com/hiddify/hiddify-core/hiddifyrpc" + "google.golang.org/grpc" +) + +type ExtensionHostService struct { + pb.UnimplementedExtensionHostServiceServer +} + +func (ExtensionHostService) ListExtensions(ctx context.Context, empty *pb.Empty) (*pb.ExtensionList, error) { + extensionList := &pb.ExtensionList{ + Extensions: make([]*pb.Extension, 0), + } + + for _, extension := range extensionsMap { + extensionList.Extensions = append(extensionList.Extensions, &pb.Extension{ + Id: (*extension).getId(), + Title: (*extension).GetTitle(), + Description: (*extension).GetDescription(), + }) + } + return extensionList, nil +} + +func (e ExtensionHostService) Connect(req *pb.ExtensionRequest, stream grpc.ServerStreamingServer[pb.ExtensionResponse]) error { + // Get the extension from the map using the Extension ID + if extension, ok := extensionsMap[req.GetExtensionId()]; ok { + + log.Printf("Connecting stream for extension %s", req.GetExtensionId()) + log.Printf("Extension data: %+v", extension) + // Handle loading the UI for the extension + // Call extension-specific logic to generate UI data + // if err := platform.connect(stream); err != nil { + // log.Printf("Error connecting stream for extension %s: %v", req.GetExtensionId(), err) + // } + if err := (*extension).UpdateUI((*extension).GetUI()); err != nil { + log.Printf("Error updating UI for extension %s: %v", req.GetExtensionId(), err) + } + // info := <-platform.queue + + // stream.Send(info) + // (*platform.extension).SubmitData(map[string]string{}) + // log.Printf("Extension info: %+v", info) + // // Handle submitting data to the extension + // case pb.ExtensionRequestType_SUBMIT_DATA: + // // Handle submitting data to the extension + // // Process the provided data + // err := extension.SubmitData(req.GetData()) + // if err != nil { + // log.Printf("Error submitting data for extension %s: %v", req.GetExtensionId(), err) + // // continue + // } + + // case hiddifyrpc.ExtensionRequestType_CANCEL: + // // Handle canceling the current operation in the extension + // extension.Stop() + // log.Printf("Operation canceled for extension %s", req.GetExtensionId()) + + // default: + // log.Printf("Unknown request type: %v", req.GetType()) + // } + + for { + select { + case <-stream.Context().Done(): + return nil + case info := <-(*extension).getQueue(): + stream.Send(info) + if info.GetType() == pb.ExtensionResponseType_END { + return nil + } + } + } + + // break + // case <-stopCh: + // break + // // case info := <-sub: + // // stream.Send(&info) + // case <-time.After(1000 * time.Millisecond): + // } + + // extension := extensionsMap[data.GetExtensionId()] + // ui := extension.GetUI(data.Data) + + // return &pb.UI{ + // ExtensionId: data.GetExtensionId(), + // JsonUi: ui.ToJSON(), + // }, nil + } else { + log.Printf("Extension with ID %s not found", req.GetExtensionId()) + return fmt.Errorf("Extension with ID %s not found", req.GetExtensionId()) + } +} + +func (e ExtensionHostService) SubmitForm(ctx context.Context, req *pb.ExtensionRequest) (*pb.ExtensionActionResult, error) { + if extension, ok := extensionsMap[req.GetExtensionId()]; ok { + (*extension).SubmitData(req.GetData()) + + return &pb.ExtensionActionResult{ + ExtensionId: req.ExtensionId, + Code: pb.ResponseCode_OK, + Message: "Success", + }, nil + } + return nil, fmt.Errorf("Extension with ID %s not found", req.GetExtensionId()) +} + +func (e ExtensionHostService) Cancel(ctx context.Context, req *pb.ExtensionRequest) (*pb.ExtensionActionResult, error) { + if extension, ok := extensionsMap[req.GetExtensionId()]; ok { + (*extension).Cancel() + + return &pb.ExtensionActionResult{ + ExtensionId: req.ExtensionId, + Code: pb.ResponseCode_OK, + Message: "Success", + }, nil + } + return nil, fmt.Errorf("Extension with ID %s not found", req.GetExtensionId()) +} + +func (e ExtensionHostService) Stop(ctx context.Context, req *pb.ExtensionRequest) (*pb.ExtensionActionResult, error) { + if extension, ok := extensionsMap[req.GetExtensionId()]; ok { + (*extension).Stop() + + return &pb.ExtensionActionResult{ + ExtensionId: req.ExtensionId, + Code: pb.ResponseCode_OK, + Message: "Success", + }, nil + } + return nil, fmt.Errorf("Extension with ID %s not found", req.GetExtensionId()) +} diff --git a/extension/html/index.html b/extension/html/index.html new file mode 100644 index 0000000..431c337 --- /dev/null +++ b/extension/html/index.html @@ -0,0 +1,52 @@ + + + + + + Hiddify Extensions + + + + + + + + +
+
+ +
+ + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/extension/html/rpc.js b/extension/html/rpc.js new file mode 100644 index 0000000..6e9252c --- /dev/null +++ b/extension/html/rpc.js @@ -0,0 +1,2833 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.HelloRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.HelloRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.HelloRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloRequest.toObject = function(includeInstance, msg) { + var f, obj = { +name: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.HelloRequest} + */ +proto.hiddifyrpc.HelloRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.HelloRequest; + return proto.hiddifyrpc.HelloRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.HelloRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.HelloRequest} + */ +proto.hiddifyrpc.HelloRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.HelloRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.HelloRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.HelloRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.hiddifyrpc.HelloRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.HelloRequest} returns this + */ +proto.hiddifyrpc.HelloRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.HelloResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.HelloResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.HelloResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloResponse.toObject = function(includeInstance, msg) { + var f, obj = { +message: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.HelloResponse} + */ +proto.hiddifyrpc.HelloResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.HelloResponse; + return proto.hiddifyrpc.HelloResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.HelloResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.HelloResponse} + */ +proto.hiddifyrpc.HelloResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.HelloResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.HelloResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.HelloResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string message = 1; + * @return {string} + */ +proto.hiddifyrpc.HelloResponse.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.HelloResponse} returns this + */ +proto.hiddifyrpc.HelloResponse.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.Empty.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.Empty.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.Empty} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Empty.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.Empty} + */ +proto.hiddifyrpc.Empty.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.Empty; + return proto.hiddifyrpc.Empty.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.Empty} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.Empty} + */ +proto.hiddifyrpc.Empty.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.Empty.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.Empty.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.Empty} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Empty.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + +/** + * @enum {number} + */ +proto.hiddifyrpc.ResponseCode = { + OK: 0, + FAILED: 1 +}; + +goog.object.extend(exports, proto.hiddifyrpc); + +},{"google-protobuf":9}],2:[function(require,module,exports){ +const extension = require("./extension_grpc_web_pb.js"); + +const grpcServerAddress = '/'; +const client = new extension.ExtensionHostServicePromiseClient(grpcServerAddress, null, null); + +module.exports = { client ,extension}; +},{"./extension_grpc_web_pb.js":6}],3:[function(require,module,exports){ +const { listExtensions } = require('./extensionList.js'); + +window.onload = () => { + listExtensions(); +}; + + + +},{"./extensionList.js":4}],4:[function(require,module,exports){ + +const { client,extension } = require('./client.js'); +async function listExtensions() { + $("#extension-list-container").show(); + $("#extension-page-container").hide(); + + try { + const extensionListContainer = document.getElementById('extension-list-container'); + extensionListContainer.innerHTML = ''; // Clear previous entries + const response = await client.listExtensions(new extension.Empty(), {}); + const header = document.createElement('h1'); + header.classList.add('mb-4'); + header.textContent = "Extension List"; + extensionListContainer.appendChild(header); + + const extensionList = response.getExtensionsList(); + extensionList.forEach(ext => { + const listItem = createExtensionListItem(ext); + extensionListContainer.appendChild(listItem); + }); + } catch (err) { + console.error('Error listing extensions:', err); + } +} + +function createExtensionListItem(ext) { + const listItem = document.createElement('li'); + listItem.className = 'list-group-item d-flex justify-content-between align-items-center'; + listItem.setAttribute('data-extension-id', ext.getId()); + + const contentDiv = document.createElement('div'); + + const titleElement = document.createElement('span'); + titleElement.innerHTML = `${ext.getTitle()}`; + contentDiv.appendChild(titleElement); + + const descriptionElement = document.createElement('p'); + descriptionElement.className = 'mb-0'; + descriptionElement.textContent = ext.getDescription(); + contentDiv.appendChild(descriptionElement); + + listItem.appendChild(contentDiv); + + const switchDiv = createSwitchElement(ext); + listItem.appendChild(switchDiv); + const {openExtensionPage} = require('./extensionPage.js'); + + listItem.addEventListener('click', () => openExtensionPage(ext.getId())); + + return listItem; +} + +function createSwitchElement(ext) { + const switchDiv = document.createElement('div'); + switchDiv.className = 'form-check form-switch'; + + const switchButton = document.createElement('input'); + switchButton.type = 'checkbox'; + switchButton.className = 'form-check-input'; + switchButton.checked = ext.getEnable(); + switchButton.addEventListener('change', () => toggleExtension(ext.getId(), switchButton.checked)); + + switchDiv.appendChild(switchButton); + return switchDiv; +} + +async function toggleExtension(extensionId, enable) { + const request = new extension.EditExtensionRequest(); + request.setExtensionId(extensionId); + request.setEnable(enable); + + try { + await client.editExtension(request, {}); + console.log(`Extension ${extensionId} updated to ${enable ? 'enabled' : 'disabled'}`); + } catch (err) { + console.error('Error updating extension status:', err); + } +} + + + +module.exports = { listExtensions }; +},{"./client.js":2,"./extensionPage.js":5}],5:[function(require,module,exports){ +const { client,extension } = require('./client.js'); +const { renderForm } = require('./formRenderer.js'); +const { listExtensions } = require('./extensionList.js'); +var currentExtensionId=undefined; +function openExtensionPage(extensionId) { + currentExtensionId=extensionId; + $("#extension-list-container").hide(); + $("#extension-page-container").show(); + const request = new extension.ExtensionRequest(); + request.setExtensionId(extensionId); + + const stream = client.connect(request, {}); + + stream.on('data', (response) => { + + if (response.getExtensionId() === currentExtensionId) { + ui=JSON.parse(response.getJsonUi()) + if(response.getType()== proto.hiddifyrpc.ExtensionResponseType.SHOW_DIALOG) { + renderForm(ui, "dialog",handleSubmitButtonClick,handleCancelButtonClick,undefined); + }else{ + renderForm(ui, "",handleSubmitButtonClick,handleCancelButtonClick,handleStopButtonClick); + } + + + } + }); + + stream.on('error', (err) => { + console.error('Error opening extension page:', err); + }); + + stream.on('end', () => { + console.log('Stream ended'); + }); +} + +async function handleSubmitButtonClick(event) { + event.preventDefault(); + const formData = new FormData(event.target.closest('form')); + const request = new extension.ExtensionRequest(); + + formData.forEach((value, key) => { + request.getDataMap()[key] = value; + }); + request.setExtensionId(currentExtensionId); + + try { + await client.submitForm(request, {}); + console.log('Form submitted successfully.'); + } catch (err) { + console.error('Error submitting form:', err); + } +} + +async function handleCancelButtonClick(event) { + event.preventDefault(); + const request = new extension.ExtensionRequest(); + request.setExtensionId(currentExtensionId); + + try { + await client.cancel(request, {}); + console.log('Extension cancelled successfully.'); + } catch (err) { + console.error('Error cancelling extension:', err); + } +} + +async function handleStopButtonClick(event) { + event.preventDefault(); + const request = new extension.ExtensionRequest(); + request.setExtensionId(currentExtensionId); + + try { + await client.stop(request, {}); + console.log('Extension stopped successfully.'); + currentExtensionId = undefined; + listExtensions(); // Return to the extension list + } catch (err) { + console.error('Error stopping extension:', err); + } +} + + + +module.exports = { openExtensionPage }; +},{"./client.js":2,"./extensionList.js":4,"./formRenderer.js":8}],6:[function(require,module,exports){ +/** + * @fileoverview gRPC-Web generated client stub for hiddifyrpc + * @enhanceable + * @public + */ + +// Code generated by protoc-gen-grpc-web. DO NOT EDIT. +// versions: +// protoc-gen-grpc-web v1.5.0 +// protoc v5.28.0 +// source: extension.proto + + +/* eslint-disable */ +// @ts-nocheck + + + +const grpc = {}; +grpc.web = require('grpc-web'); + + +var base_pb = require('./base_pb.js') +const proto = {}; +proto.hiddifyrpc = require('./extension_pb.js'); + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.ExtensionHostServiceClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.ExtensionList>} + */ +const methodDescriptor_ExtensionHostService_ListExtensions = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/ListExtensions', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.ExtensionList, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionList.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionList)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.listExtensions = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/ListExtensions', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_ListExtensions, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.listExtensions = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/ListExtensions', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_ListExtensions); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionResponse>} + */ +const methodDescriptor_ExtensionHostService_Connect = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/Connect', + grpc.web.MethodType.SERVER_STREAMING, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionResponse, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!grpc.web.ClientReadableStream} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.connect = + function(request, metadata) { + return this.client_.serverStreaming(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Connect', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Connect); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!grpc.web.ClientReadableStream} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.connect = + function(request, metadata) { + return this.client_.serverStreaming(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Connect', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Connect); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.EditExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_EditExtension = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/EditExtension', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.EditExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.EditExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.EditExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.editExtension = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/EditExtension', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_EditExtension, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.EditExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.editExtension = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/EditExtension', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_EditExtension); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_SubmitForm = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/SubmitForm', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.submitForm = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/SubmitForm', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_SubmitForm, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.submitForm = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/SubmitForm', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_SubmitForm); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_Cancel = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/Cancel', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.cancel = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Cancel', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Cancel, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.cancel = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Cancel', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Cancel); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_Stop = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/Stop', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.stop = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Stop', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Stop, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.stop = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Stop', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Stop); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_GetUI = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/GetUI', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.getUI = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/GetUI', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_GetUI, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.getUI = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/GetUI', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_GetUI); +}; + + +module.exports = proto.hiddifyrpc; + + +},{"./base_pb.js":1,"./extension_pb.js":7,"grpc-web":10}],7:[function(require,module,exports){ +// source: extension.proto +/** + * @fileoverview + * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = + (typeof globalThis !== 'undefined' && globalThis) || + (typeof window !== 'undefined' && window) || + (typeof global !== 'undefined' && global) || + (typeof self !== 'undefined' && self) || + (function () { return this; }).call(null) || + Function('return this')(); + +var base_pb = require('./base_pb.js'); +goog.object.extend(proto, base_pb); +goog.exportSymbol('proto.hiddifyrpc.EditExtensionRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.Extension', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionActionResult', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionList', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionResponseType', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionActionResult = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionActionResult, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionActionResult.displayName = 'proto.hiddifyrpc.ExtensionActionResult'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionList = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.hiddifyrpc.ExtensionList.repeatedFields_, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionList, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionList.displayName = 'proto.hiddifyrpc.ExtensionList'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.EditExtensionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.EditExtensionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.EditExtensionRequest.displayName = 'proto.hiddifyrpc.EditExtensionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.Extension = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.Extension, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.Extension.displayName = 'proto.hiddifyrpc.Extension'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionRequest.displayName = 'proto.hiddifyrpc.ExtensionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionResponse.displayName = 'proto.hiddifyrpc.ExtensionResponse'; +} + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionActionResult.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionActionResult} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionActionResult.toObject = function(includeInstance, msg) { + var f, obj = { +extensionId: jspb.Message.getFieldWithDefault(msg, 1, ""), +code: jspb.Message.getFieldWithDefault(msg, 2, 0), +message: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionActionResult} + */ +proto.hiddifyrpc.ExtensionActionResult.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionActionResult; + return proto.hiddifyrpc.ExtensionActionResult.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionActionResult} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionActionResult} + */ +proto.hiddifyrpc.ExtensionActionResult.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 2: + var value = /** @type {!proto.hiddifyrpc.ResponseCode} */ (reader.readEnum()); + msg.setCode(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionActionResult.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionActionResult} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionActionResult.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getCode(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional string extension_id = 1; + * @return {string} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionActionResult} returns this + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional ResponseCode code = 2; + * @return {!proto.hiddifyrpc.ResponseCode} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.getCode = function() { + return /** @type {!proto.hiddifyrpc.ResponseCode} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.ResponseCode} value + * @return {!proto.hiddifyrpc.ExtensionActionResult} returns this + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.setCode = function(value) { + return jspb.Message.setProto3EnumField(this, 2, value); +}; + + +/** + * optional string message = 3; + * @return {string} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionActionResult} returns this + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.hiddifyrpc.ExtensionList.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionList.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionList.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionList} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionList.toObject = function(includeInstance, msg) { + var f, obj = { +extensionsList: jspb.Message.toObjectList(msg.getExtensionsList(), + proto.hiddifyrpc.Extension.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionList} + */ +proto.hiddifyrpc.ExtensionList.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionList; + return proto.hiddifyrpc.ExtensionList.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionList} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionList} + */ +proto.hiddifyrpc.ExtensionList.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.hiddifyrpc.Extension; + reader.readMessage(value,proto.hiddifyrpc.Extension.deserializeBinaryFromReader); + msg.addExtensions(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionList.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionList.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionList} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionList.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + proto.hiddifyrpc.Extension.serializeBinaryToWriter + ); + } +}; + + +/** + * repeated Extension extensions = 1; + * @return {!Array} + */ +proto.hiddifyrpc.ExtensionList.prototype.getExtensionsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.hiddifyrpc.Extension, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.hiddifyrpc.ExtensionList} returns this +*/ +proto.hiddifyrpc.ExtensionList.prototype.setExtensionsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.hiddifyrpc.Extension=} opt_value + * @param {number=} opt_index + * @return {!proto.hiddifyrpc.Extension} + */ +proto.hiddifyrpc.ExtensionList.prototype.addExtensions = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.hiddifyrpc.Extension, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.hiddifyrpc.ExtensionList} returns this + */ +proto.hiddifyrpc.ExtensionList.prototype.clearExtensionsList = function() { + return this.setExtensionsList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.EditExtensionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.EditExtensionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.EditExtensionRequest.toObject = function(includeInstance, msg) { + var f, obj = { +extensionId: jspb.Message.getFieldWithDefault(msg, 1, ""), +enable: jspb.Message.getBooleanFieldWithDefault(msg, 2, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.EditExtensionRequest} + */ +proto.hiddifyrpc.EditExtensionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.EditExtensionRequest; + return proto.hiddifyrpc.EditExtensionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.EditExtensionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.EditExtensionRequest} + */ +proto.hiddifyrpc.EditExtensionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnable(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.EditExtensionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.EditExtensionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.EditExtensionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getEnable(); + if (f) { + writer.writeBool( + 2, + f + ); + } +}; + + +/** + * optional string extension_id = 1; + * @return {string} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.EditExtensionRequest} returns this + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional bool enable = 2; + * @return {boolean} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.getEnable = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.EditExtensionRequest} returns this + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.setEnable = function(value) { + return jspb.Message.setProto3BooleanField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.Extension.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.Extension.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.Extension} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Extension.toObject = function(includeInstance, msg) { + var f, obj = { +id: jspb.Message.getFieldWithDefault(msg, 1, ""), +title: jspb.Message.getFieldWithDefault(msg, 2, ""), +description: jspb.Message.getFieldWithDefault(msg, 3, ""), +enable: jspb.Message.getBooleanFieldWithDefault(msg, 4, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.Extension} + */ +proto.hiddifyrpc.Extension.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.Extension; + return proto.hiddifyrpc.Extension.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.Extension} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.Extension} + */ +proto.hiddifyrpc.Extension.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setTitle(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setDescription(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnable(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.Extension.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.Extension.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.Extension} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Extension.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getTitle(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getDescription(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getEnable(); + if (f) { + writer.writeBool( + 4, + f + ); + } +}; + + +/** + * optional string id = 1; + * @return {string} + */ +proto.hiddifyrpc.Extension.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string title = 2; + * @return {string} + */ +proto.hiddifyrpc.Extension.prototype.getTitle = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setTitle = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string description = 3; + * @return {string} + */ +proto.hiddifyrpc.Extension.prototype.getDescription = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setDescription = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional bool enable = 4; + * @return {boolean} + */ +proto.hiddifyrpc.Extension.prototype.getEnable = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setEnable = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionRequest.toObject = function(includeInstance, msg) { + var f, obj = { +extensionId: jspb.Message.getFieldWithDefault(msg, 1, ""), +dataMap: (f = msg.getDataMap()) ? f.toObject(includeInstance, undefined) : [] + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionRequest} + */ +proto.hiddifyrpc.ExtensionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionRequest; + return proto.hiddifyrpc.ExtensionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionRequest} + */ +proto.hiddifyrpc.ExtensionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 2: + var value = msg.getDataMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getDataMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } +}; + + +/** + * optional string extension_id = 1; + * @return {string} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionRequest} returns this + */ +proto.hiddifyrpc.ExtensionRequest.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * map data = 2; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.getDataMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 2, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.hiddifyrpc.ExtensionRequest} returns this + */ +proto.hiddifyrpc.ExtensionRequest.prototype.clearDataMap = function() { + this.getDataMap().clear(); + return this; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionResponse.toObject = function(includeInstance, msg) { + var f, obj = { +type: jspb.Message.getFieldWithDefault(msg, 1, 0), +extensionId: jspb.Message.getFieldWithDefault(msg, 2, ""), +jsonUi: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionResponse} + */ +proto.hiddifyrpc.ExtensionResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionResponse; + return proto.hiddifyrpc.ExtensionResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionResponse} + */ +proto.hiddifyrpc.ExtensionResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.hiddifyrpc.ExtensionResponseType} */ (reader.readEnum()); + msg.setType(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setJsonUi(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getType(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getJsonUi(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional ExtensionResponseType type = 1; + * @return {!proto.hiddifyrpc.ExtensionResponseType} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.getType = function() { + return /** @type {!proto.hiddifyrpc.ExtensionResponseType} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionResponseType} value + * @return {!proto.hiddifyrpc.ExtensionResponse} returns this + */ +proto.hiddifyrpc.ExtensionResponse.prototype.setType = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional string extension_id = 2; + * @return {string} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionResponse} returns this + */ +proto.hiddifyrpc.ExtensionResponse.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string json_ui = 3; + * @return {string} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.getJsonUi = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionResponse} returns this + */ +proto.hiddifyrpc.ExtensionResponse.prototype.setJsonUi = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * @enum {number} + */ +proto.hiddifyrpc.ExtensionResponseType = { + NOTHING: 0, + UPDATE_UI: 1, + SHOW_DIALOG: 2, + END: 3 +}; + +goog.object.extend(exports, proto.hiddifyrpc); + +},{"./base_pb.js":1,"google-protobuf":9}],8:[function(require,module,exports){ +const { client } = require('./client.js'); +const extension = require("./extension_grpc_web_pb.js"); + +function renderForm(json, dialog, submitAction, cancelAction, stopAction) { + const container = document.getElementById(`extension-page-container${dialog}`); + const formId = `dynamicForm${json.id}${dialog}`; + + const existingForm = document.getElementById(formId); + if (existingForm) { + existingForm.remove(); + } + const form = document.createElement('form'); + form.id = formId; + + if (dialog === "dialog") { + document.getElementById("modalLabel").textContent = json.title; + } else { + const titleElement = createTitleElement(json); + form.appendChild(titleElement); + } + addElementsToForm(form, json); + const buttonGroup = createButtonGroup(json, submitAction, cancelAction, stopAction); + if (dialog === "dialog") { + document.getElementById("modal-footer").innerHTML = ''; + document.getElementById("modal-footer").appendChild(buttonGroup); + } else { + form.appendChild(buttonGroup); + } + container.appendChild(form); +} + +function addElementsToForm(form, json) { + + + + const description = document.createElement('p'); + description.textContent = json.description; + form.appendChild(description); + + json.fields.forEach(field => { + const formGroup = createFormGroup(field); + form.appendChild(formGroup); + }); + + + return form; +} + +function createTitleElement(json) { + const title = document.createElement('h1'); + title.textContent = json.title; + return title; +} + +function createFormGroup(field) { + const formGroup = document.createElement('div'); + formGroup.classList.add('mb-3'); + + if (field.label && !field.labelHidden) { + const label = document.createElement('label'); + label.textContent = field.label; + label.setAttribute('for', field.key); + formGroup.appendChild(label); + } + + const input = createInputElement(field); + formGroup.appendChild(input); + return formGroup; +} + +function createInputElement(field) { + let input; + + switch (field.type) { + case "TextArea": + input = document.createElement('textarea'); + input.rows = field.lines || 3; + input.textContent = field.value || ''; + break; + + case "Checkbox": + case "RadioButton": + input = createCheckboxOrRadioGroup(field); + break; + + case "Switch": + input = createSwitchElement(field); + break; + + case "Select": + input = document.createElement('select'); + field.items.forEach(item => { + const option = document.createElement('option'); + option.value = item.value; + option.text = item.label; + input.appendChild(option); + }); + break; + + default: + input = document.createElement('input'); + input.type = field.type.toLowerCase(); + input.value = field.value; + break; + } + + input.id = field.key; + input.name = field.key; + if (field.readOnly) input.readOnly = true; + if (field.type == "Checkbox" || field.type == "RadioButton" || field.type == "Switch") { + + } else { + if (field.required) input.required = true; + input.classList.add('form-control'); + if (field.placeholder) input.placeholder = field.placeholder; + } + return input; +} + +function createCheckboxOrRadioGroup(field) { + const wrapper = document.createDocumentFragment(); + + field.items.forEach(item => { + const inputWrapper = document.createElement('div'); + inputWrapper.classList.add('form-check'); + + const input = document.createElement('input'); + input.type = field.type === "Checkbox" ? 'checkbox' : 'radio'; + input.classList.add('form-check-input'); + input.id = `${field.key}_${item.value}`; + input.name = field.key; // Grouping by name for radio buttons + input.value = item.value; + input.checked = field.value === item.value; + + const itemLabel = document.createElement('label'); + itemLabel.classList.add('form-check-label'); + itemLabel.setAttribute('for', input.id); + itemLabel.textContent = item.label; + + inputWrapper.appendChild(input); + inputWrapper.appendChild(itemLabel); + wrapper.appendChild(inputWrapper); + }); + + return wrapper; +} + +function createSwitchElement(field) { + const switchWrapper = document.createElement('div'); + switchWrapper.classList.add('form-check', 'form-switch'); + + const input = document.createElement('input'); + input.type = 'checkbox'; + input.classList.add('form-check-input'); + input.setAttribute('role', 'switch'); + input.id = field.key; + input.checked = field.value === "true"; + + const label = document.createElement('label'); + label.classList.add('form-check-label'); + label.setAttribute('for', field.key); + label.textContent = field.label; + + switchWrapper.appendChild(input); + switchWrapper.appendChild(label); + + return switchWrapper; +} + +function createButtonGroup(json, submitAction, cancelAction, stopAction) { + const buttonGroup = document.createElement('div'); + buttonGroup.classList.add('btn-group'); + + const cancelButton = document.createElement('button'); + cancelButton.textContent = "Cancel"; + cancelButton.classList.add('btn', 'btn-secondary'); + cancelButton.addEventListener('click', cancelAction); + buttonGroup.appendChild(cancelButton); + if (stopAction != undefined) { + const stopButton = document.createElement('button'); + stopButton.textContent = "Stop"; + stopButton.classList.add('btn', 'btn-danger'); + stopButton.addEventListener('click', stopAction); + buttonGroup.appendChild(stopButton); + } + + if (json.buttonMode === "SubmitCancel") { + const submitButton = document.createElement('button'); + submitButton.textContent = "Submit"; + submitButton.classList.add('btn', 'btn-primary'); + submitButton.addEventListener('click', submitAction); + buttonGroup.appendChild(submitButton); + } + + + return buttonGroup; +} + + +module.exports = { renderForm }; +},{"./client.js":2,"./extension_grpc_web_pb.js":6}],9:[function(require,module,exports){ +(function (global){(function (){ +/* + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ +var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},e="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;function ba(a,b){if(b){var c=e;a=a.split(".");for(var d=0;d=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};function sa(a,b,c,d){var f="Assertion failed";if(c){f+=": "+c;var h=d}else a&&(f+=": "+a,h=b);throw Error(f,h||[]);}function n(a,b,c){for(var d=[],f=2;f=a.length)return String.fromCharCode.apply(null,a);for(var b="",c=0;c>2;f=(f&3)<<4|m>>4;m=(m&15)<<2|B>>6;B&=63;t||(B=64,h||(m=64));c.push(b[M],b[f],b[m]||"",b[B]||"")}return c.join("")}function Da(a){var b=a.length,c=3*b/4;c%3?c=Math.floor(c):-1!="=.".indexOf(a[b-1])&&(c=-1!="=.".indexOf(a[b-2])?c-2:c-1);var d=new Uint8Array(c),f=0;Ea(a,function(h){d[f++]=h});return d.subarray(0,f)} +function Ea(a,b){function c(B){for(;d>4);64!=m&&(b(h<<4&240|m>>2),64!=t&&b(m<<6&192|t))}} +function Ca(){if(!x){x={};for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),b=["+/=","+/","-_=","-_.","-_"],c=0;5>c;c++){var d=a.concat(b[c].split(""));Aa[c]=d;for(var f=0;f>>0;a=Math.floor((a-b)/4294967296)>>>0;y=b;z=a}g("jspb.utils.splitUint64",Fa,void 0);function A(a){var b=0>a;a=Math.abs(a);var c=a>>>0;a=Math.floor((a-c)/4294967296);a>>>=0;b&&(a=~a>>>0,c=(~c>>>0)+1,4294967295a;a=2*Math.abs(a);Fa(a);a=y;var c=z;b&&(0==a?0==c?c=a=4294967295:(c--,a=4294967295):a--);y=a;z=c}g("jspb.utils.splitZigzag64",Ga,void 0); +function Ha(a){var b=0>a?1:0;a=b?-a:a;if(0===a)0<1/a?y=z=0:(z=0,y=2147483648);else if(isNaN(a))z=0,y=2147483647;else if(3.4028234663852886E38>>0;else if(1.1754943508222875E-38>a)a=Math.round(a/Math.pow(2,-149)),z=0,y=(b<<31|a)>>>0;else{var c=Math.floor(Math.log(a)/Math.LN2);a*=Math.pow(2,-c);a=Math.round(8388608*a);16777216<=a&&++c;z=0;y=(b<<31|c+127<<23|a&8388607)>>>0}}g("jspb.utils.splitFloat32",Ha,void 0); +function Ia(a){var b=0>a?1:0;a=b?-a:a;if(0===a)z=0<1/a?0:2147483648,y=0;else if(isNaN(a))z=2147483647,y=4294967295;else if(1.7976931348623157E308>>0,y=0;else if(2.2250738585072014E-308>a)a/=Math.pow(2,-1074),z=(b<<31|a/4294967296)>>>0,y=a>>>0;else{var c=a,d=0;if(2<=c)for(;2<=c&&1023>d;)d++,c/=2;else for(;1>c&&-1022>>0;y=4503599627370496*a>>>0}}g("jspb.utils.splitFloat64",Ia,void 0); +function C(a){var b=a.charCodeAt(4),c=a.charCodeAt(5),d=a.charCodeAt(6),f=a.charCodeAt(7);y=a.charCodeAt(0)+(a.charCodeAt(1)<<8)+(a.charCodeAt(2)<<16)+(a.charCodeAt(3)<<24)>>>0;z=b+(c<<8)+(d<<16)+(f<<24)>>>0}g("jspb.utils.splitHash64",C,void 0);function D(a,b){return 4294967296*b+(a>>>0)}g("jspb.utils.joinUint64",D,void 0);function E(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b>>>0,0==a&&(b=b+1>>>0));a=D(a,b);return c?-a:a}g("jspb.utils.joinInt64",E,void 0); +function Ja(a,b,c){var d=b>>31;return c(a<<1^d,(b<<1|a>>>31)^d)}g("jspb.utils.toZigzag64",Ja,void 0);function Ka(a,b){return Ma(a,b,E)}g("jspb.utils.joinZigzag64",Ka,void 0);function Ma(a,b,c){var d=-(a&1);return c((a>>>1|b<<31)^d,b>>>1^d)}g("jspb.utils.fromZigzag64",Ma,void 0);function Na(a){var b=2*(a>>31)+1,c=a>>>23&255;a&=8388607;return 255==c?a?NaN:Infinity*b:0==c?b*Math.pow(2,-149)*a:b*Math.pow(2,c-150)*(a+Math.pow(2,23))}g("jspb.utils.joinFloat32",Na,void 0); +function Oa(a,b){var c=2*(b>>31)+1,d=b>>>20&2047;a=4294967296*(b&1048575)+a;return 2047==d?a?NaN:Infinity*c:0==d?c*Math.pow(2,-1074)*a:c*Math.pow(2,d-1075)*(a+4503599627370496)}g("jspb.utils.joinFloat64",Oa,void 0);function Pa(a,b){return String.fromCharCode(a>>>0&255,a>>>8&255,a>>>16&255,a>>>24&255,b>>>0&255,b>>>8&255,b>>>16&255,b>>>24&255)}g("jspb.utils.joinHash64",Pa,void 0);g("jspb.utils.DIGITS","0123456789abcdef".split(""),void 0); +function F(a,b){function c(f,h){f=f?String(f):"";return h?"0000000".slice(f.length)+f:f}if(2097151>=b)return""+D(a,b);var d=(a>>>24|b<<8)>>>0&16777215;b=b>>16&65535;a=(a&16777215)+6777216*d+6710656*b;d+=8147497*b;b*=2;1E7<=a&&(d+=Math.floor(a/1E7),a%=1E7);1E7<=d&&(b+=Math.floor(d/1E7),d%=1E7);return c(b,0)+c(d,b)+c(a,1)}g("jspb.utils.joinUnsignedDecimalString",F,void 0);function G(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b+(0==a?1:0)>>>0);a=F(a,b);return c?"-"+a:a} +g("jspb.utils.joinSignedDecimalString",G,void 0);function Qa(a,b){C(a);a=y;var c=z;return b?G(a,c):F(a,c)}g("jspb.utils.hash64ToDecimalString",Qa,void 0);g("jspb.utils.hash64ArrayToDecimalStrings",function(a,b){for(var c=Array(a.length),d=0;dB&&(1!==m||0>>=8}function c(){for(var m=0;8>m;m++)f[m]=~f[m]&255}n(0a?48+a:87+a)} +function Sa(a){return 97<=a?a-97+10:a-48}g("jspb.utils.hash64ToHexString",function(a){var b=Array(18);b[0]="0";b[1]="x";for(var c=0;8>c;c++){var d=a.charCodeAt(7-c);b[2*c+2]=Ra(d>>4);b[2*c+3]=Ra(d&15)}return b.join("")},void 0);g("jspb.utils.hexStringToHash64",function(a){a=a.toLowerCase();n(18==a.length);n("0"==a[0]);n("x"==a[1]);for(var b="",c=0;8>c;c++)b=String.fromCharCode(16*Sa(a.charCodeAt(2*c+2))+Sa(a.charCodeAt(2*c+3)))+b;return b},void 0); +g("jspb.utils.hash64ToNumber",function(a,b){C(a);a=y;var c=z;return b?E(a,c):D(a,c)},void 0);g("jspb.utils.numberToHash64",function(a){A(a);return Pa(y,z)},void 0);g("jspb.utils.countVarints",function(a,b,c){for(var d=0,f=b;f>7;return c-b-d},void 0); +g("jspb.utils.countVarintFields",function(a,b,c,d){var f=0;d*=8;if(128>d)for(;b>=7}if(a[b++]!=h)break;for(f++;h=a[b++],0!=(h&128););}return f},void 0);function Ta(a,b,c,d,f){var h=0;if(128>d)for(;b>=7}if(a[b++]!=m)break;h++;b+=f}return h} +g("jspb.utils.countFixed32Fields",function(a,b,c,d){return Ta(a,b,c,8*d+5,4)},void 0);g("jspb.utils.countFixed64Fields",function(a,b,c,d){return Ta(a,b,c,8*d+1,8)},void 0);g("jspb.utils.countDelimitedFields",function(a,b,c,d){var f=0;for(d=8*d+2;b>=7}if(a[b++]!=h)break;f++;for(var m=0,t=1;h=a[b++],m+=(h&127)*t,t*=128,0!=(h&128););b+=m}return f},void 0); +g("jspb.utils.debugBytesToTextFormat",function(a){var b='"';if(a){a=Ua(a);for(var c=0;ca[c]&&(b+="0"),b+=a[c].toString(16)}return b+'"'},void 0); +g("jspb.utils.debugScalarToTextFormat",function(a){if("string"===typeof a){a=String(a);for(var b=['"'],c=0;cf))if(f=d,f in za)d=za[f];else if(f in ya)d=za[f]=ya[f];else{m=f.charCodeAt(0);if(31m)d=f;else{if(256>m){if(d="\\x",16>m||256m&&(d+="0");d+=m.toString(16).toUpperCase()}d=za[f]=d}m=d}b[h]=m}b.push('"');a=b.join("")}else a=a.toString();return a},void 0); +g("jspb.utils.stringToByteArray",function(a){for(var b=new Uint8Array(a.length),c=0;cVa.length&&Va.push(this)};I.prototype.free=I.prototype.Ca;I.prototype.clone=function(){return Wa(this.b,this.h,this.c-this.h)};I.prototype.clone=I.prototype.clone; +I.prototype.clear=function(){this.b=null;this.a=this.c=this.h=0;this.v=!1};I.prototype.clear=I.prototype.clear;I.prototype.Y=function(){return this.b};I.prototype.getBuffer=I.prototype.Y;I.prototype.H=function(a,b,c){this.b=Ua(a);this.h=void 0!==b?b:0;this.c=void 0!==c?this.h+c:this.b.length;this.a=this.h};I.prototype.setBlock=I.prototype.H;I.prototype.Db=function(){return this.c};I.prototype.getEnd=I.prototype.Db;I.prototype.setEnd=function(a){this.c=a};I.prototype.setEnd=I.prototype.setEnd; +I.prototype.reset=function(){this.a=this.h};I.prototype.reset=I.prototype.reset;I.prototype.B=function(){return this.a};I.prototype.getCursor=I.prototype.B;I.prototype.Ma=function(a){this.a=a};I.prototype.setCursor=I.prototype.Ma;I.prototype.advance=function(a){this.a+=a;n(this.a<=this.c)};I.prototype.advance=I.prototype.advance;I.prototype.ya=function(){return this.a==this.c};I.prototype.atEnd=I.prototype.ya;I.prototype.Qb=function(){return this.a>this.c};I.prototype.pastEnd=I.prototype.Qb; +I.prototype.getError=function(){return this.v||0>this.a||this.a>this.c};I.prototype.getError=I.prototype.getError;I.prototype.w=function(a){for(var b=128,c=0,d=0,f=0;4>f&&128<=b;f++)b=this.b[this.a++],c|=(b&127)<<7*f;128<=b&&(b=this.b[this.a++],c|=(b&127)<<28,d|=(b&127)>>4);if(128<=b)for(f=0;5>f&&128<=b;f++)b=this.b[this.a++],d|=(b&127)<<7*f+3;if(128>b)return a(c>>>0,d>>>0);p("Failed to read varint, encoding is invalid.");this.v=!0};I.prototype.readSplitVarint64=I.prototype.w; +I.prototype.ea=function(a){return this.w(function(b,c){return Ma(b,c,a)})};I.prototype.readSplitZigzagVarint64=I.prototype.ea;I.prototype.ta=function(a){var b=this.b,c=this.a;this.a+=8;for(var d=0,f=0,h=c+7;h>=c;h--)d=d<<8|b[h],f=f<<8|b[h+4];return a(d,f)};I.prototype.readSplitFixed64=I.prototype.ta;I.prototype.kb=function(){for(;this.b[this.a]&128;)this.a++;this.a++};I.prototype.skipVarint=I.prototype.kb;I.prototype.mb=function(a){for(;128>>=7;this.a--};I.prototype.unskipVarint=I.prototype.mb; +I.prototype.o=function(){var a=this.b;var b=a[this.a];var c=b&127;if(128>b)return this.a+=1,n(this.a<=this.c),c;b=a[this.a+1];c|=(b&127)<<7;if(128>b)return this.a+=2,n(this.a<=this.c),c;b=a[this.a+2];c|=(b&127)<<14;if(128>b)return this.a+=3,n(this.a<=this.c),c;b=a[this.a+3];c|=(b&127)<<21;if(128>b)return this.a+=4,n(this.a<=this.c),c;b=a[this.a+4];c|=(b&15)<<28;if(128>b)return this.a+=5,n(this.a<=this.c),c>>>0;this.a+=5;128<=a[this.a++]&&128<=a[this.a++]&&128<=a[this.a++]&&128<=a[this.a++]&&128<= +a[this.a++]&&n(!1);n(this.a<=this.c);return c};I.prototype.readUnsignedVarint32=I.prototype.o;I.prototype.da=function(){return~~this.o()};I.prototype.readSignedVarint32=I.prototype.da;I.prototype.O=function(){return this.o().toString()};I.prototype.Ea=function(){return this.da().toString()};I.prototype.readSignedVarint32String=I.prototype.Ea;I.prototype.Ia=function(){var a=this.o();return a>>>1^-(a&1)};I.prototype.readZigzagVarint32=I.prototype.Ia;I.prototype.Ga=function(){return this.w(D)}; +I.prototype.readUnsignedVarint64=I.prototype.Ga;I.prototype.Ha=function(){return this.w(F)};I.prototype.readUnsignedVarint64String=I.prototype.Ha;I.prototype.sa=function(){return this.w(E)};I.prototype.readSignedVarint64=I.prototype.sa;I.prototype.Fa=function(){return this.w(G)};I.prototype.readSignedVarint64String=I.prototype.Fa;I.prototype.Ja=function(){return this.w(Ka)};I.prototype.readZigzagVarint64=I.prototype.Ja;I.prototype.fb=function(){return this.ea(Pa)}; +I.prototype.readZigzagVarintHash64=I.prototype.fb;I.prototype.Ka=function(){return this.ea(G)};I.prototype.readZigzagVarint64String=I.prototype.Ka;I.prototype.Gc=function(){var a=this.b[this.a];this.a+=1;n(this.a<=this.c);return a};I.prototype.readUint8=I.prototype.Gc;I.prototype.Ec=function(){var a=this.b[this.a],b=this.b[this.a+1];this.a+=2;n(this.a<=this.c);return a<<0|b<<8};I.prototype.readUint16=I.prototype.Ec; +I.prototype.m=function(){var a=this.b[this.a],b=this.b[this.a+1],c=this.b[this.a+2],d=this.b[this.a+3];this.a+=4;n(this.a<=this.c);return(a<<0|b<<8|c<<16|d<<24)>>>0};I.prototype.readUint32=I.prototype.m;I.prototype.ga=function(){var a=this.m(),b=this.m();return D(a,b)};I.prototype.readUint64=I.prototype.ga;I.prototype.ha=function(){var a=this.m(),b=this.m();return F(a,b)};I.prototype.readUint64String=I.prototype.ha; +I.prototype.Xb=function(){var a=this.b[this.a];this.a+=1;n(this.a<=this.c);return a<<24>>24};I.prototype.readInt8=I.prototype.Xb;I.prototype.Vb=function(){var a=this.b[this.a],b=this.b[this.a+1];this.a+=2;n(this.a<=this.c);return(a<<0|b<<8)<<16>>16};I.prototype.readInt16=I.prototype.Vb;I.prototype.P=function(){var a=this.b[this.a],b=this.b[this.a+1],c=this.b[this.a+2],d=this.b[this.a+3];this.a+=4;n(this.a<=this.c);return a<<0|b<<8|c<<16|d<<24};I.prototype.readInt32=I.prototype.P; +I.prototype.ba=function(){var a=this.m(),b=this.m();return E(a,b)};I.prototype.readInt64=I.prototype.ba;I.prototype.ca=function(){var a=this.m(),b=this.m();return G(a,b)};I.prototype.readInt64String=I.prototype.ca;I.prototype.aa=function(){var a=this.m();return Na(a,0)};I.prototype.readFloat=I.prototype.aa;I.prototype.Z=function(){var a=this.m(),b=this.m();return Oa(a,b)};I.prototype.readDouble=I.prototype.Z;I.prototype.pa=function(){return!!this.b[this.a++]};I.prototype.readBool=I.prototype.pa; +I.prototype.ra=function(){return this.da()};I.prototype.readEnum=I.prototype.ra; +I.prototype.fa=function(a){var b=this.b,c=this.a;a=c+a;for(var d=[],f="";ch)d.push(h);else if(192>h)continue;else if(224>h){var m=b[c++];d.push((h&31)<<6|m&63)}else if(240>h){m=b[c++];var t=b[c++];d.push((h&15)<<12|(m&63)<<6|t&63)}else if(248>h){m=b[c++];t=b[c++];var B=b[c++];h=(h&7)<<18|(m&63)<<12|(t&63)<<6|B&63;h-=65536;d.push((h>>10&1023)+55296,(h&1023)+56320)}8192<=d.length&&(f+=String.fromCharCode.apply(null,d),d.length=0)}f+=xa(d);this.a=c;return f}; +I.prototype.readString=I.prototype.fa;I.prototype.Dc=function(){var a=this.o();return this.fa(a)};I.prototype.readStringWithLength=I.prototype.Dc;I.prototype.qa=function(a){if(0>a||this.a+a>this.b.length)return this.v=!0,p("Invalid byte length!"),new Uint8Array(0);var b=this.b.subarray(this.a,this.a+a);this.a+=a;n(this.a<=this.c);return b};I.prototype.readBytes=I.prototype.qa;I.prototype.ia=function(){return this.w(Pa)};I.prototype.readVarintHash64=I.prototype.ia; +I.prototype.$=function(){var a=this.b,b=this.a,c=a[b],d=a[b+1],f=a[b+2],h=a[b+3],m=a[b+4],t=a[b+5],B=a[b+6];a=a[b+7];this.a+=8;return String.fromCharCode(c,d,f,h,m,t,B,a)};I.prototype.readFixedHash64=I.prototype.$;function J(a,b,c){this.a=Wa(a,b,c);this.O=this.a.B();this.b=this.c=-1;this.h=!1;this.v=null}g("jspb.BinaryReader",J,void 0);var K=[];J.clearInstanceCache=function(){K=[]};J.getInstanceCacheLength=function(){return K.length};function Xa(a,b,c){if(K.length){var d=K.pop();a&&d.a.H(a,b,c);return d}return new J(a,b,c)}J.alloc=Xa;J.prototype.zb=Xa;J.prototype.alloc=J.prototype.zb;J.prototype.Ca=function(){this.a.clear();this.b=this.c=-1;this.h=!1;this.v=null;100>K.length&&K.push(this)}; +J.prototype.free=J.prototype.Ca;J.prototype.Fb=function(){return this.O};J.prototype.getFieldCursor=J.prototype.Fb;J.prototype.B=function(){return this.a.B()};J.prototype.getCursor=J.prototype.B;J.prototype.Y=function(){return this.a.Y()};J.prototype.getBuffer=J.prototype.Y;J.prototype.Hb=function(){return this.c};J.prototype.getFieldNumber=J.prototype.Hb;J.prototype.Lb=function(){return this.b};J.prototype.getWireType=J.prototype.Lb;J.prototype.Mb=function(){return 2==this.b}; +J.prototype.isDelimited=J.prototype.Mb;J.prototype.bb=function(){return 4==this.b};J.prototype.isEndGroup=J.prototype.bb;J.prototype.getError=function(){return this.h||this.a.getError()};J.prototype.getError=J.prototype.getError;J.prototype.H=function(a,b,c){this.a.H(a,b,c);this.b=this.c=-1};J.prototype.setBlock=J.prototype.H;J.prototype.reset=function(){this.a.reset();this.b=this.c=-1};J.prototype.reset=J.prototype.reset;J.prototype.advance=function(a){this.a.advance(a)};J.prototype.advance=J.prototype.advance; +J.prototype.oa=function(){if(this.a.ya())return!1;if(this.getError())return p("Decoder hit an error"),!1;this.O=this.a.B();var a=this.a.o(),b=a>>>3;a&=7;if(0!=a&&5!=a&&1!=a&&2!=a&&3!=a&&4!=a)return p("Invalid wire type: %s (at position %s)",a,this.O),this.h=!0,!1;this.c=b;this.b=a;return!0};J.prototype.nextField=J.prototype.oa;J.prototype.Oa=function(){this.a.mb(this.c<<3|this.b)};J.prototype.unskipHeader=J.prototype.Oa; +J.prototype.Lc=function(){var a=this.c;for(this.Oa();this.oa()&&this.c==a;)this.C();this.a.ya()||this.Oa()};J.prototype.skipMatchingFields=J.prototype.Lc;J.prototype.lb=function(){0!=this.b?(p("Invalid wire type for skipVarintField"),this.C()):this.a.kb()};J.prototype.skipVarintField=J.prototype.lb;J.prototype.gb=function(){if(2!=this.b)p("Invalid wire type for skipDelimitedField"),this.C();else{var a=this.a.o();this.a.advance(a)}};J.prototype.skipDelimitedField=J.prototype.gb; +J.prototype.hb=function(){5!=this.b?(p("Invalid wire type for skipFixed32Field"),this.C()):this.a.advance(4)};J.prototype.skipFixed32Field=J.prototype.hb;J.prototype.ib=function(){1!=this.b?(p("Invalid wire type for skipFixed64Field"),this.C()):this.a.advance(8)};J.prototype.skipFixed64Field=J.prototype.ib;J.prototype.jb=function(){var a=this.c;do{if(!this.oa()){p("Unmatched start-group tag: stream EOF");this.h=!0;break}if(4==this.b){this.c!=a&&(p("Unmatched end-group tag"),this.h=!0);break}this.C()}while(1)}; +J.prototype.skipGroup=J.prototype.jb;J.prototype.C=function(){switch(this.b){case 0:this.lb();break;case 1:this.ib();break;case 2:this.gb();break;case 5:this.hb();break;case 3:this.jb();break;default:p("Invalid wire encoding for field.")}};J.prototype.skipField=J.prototype.C;J.prototype.Hc=function(a,b){null===this.v&&(this.v={});n(!this.v[a]);this.v[a]=b};J.prototype.registerReadCallback=J.prototype.Hc;J.prototype.Ic=function(a){n(null!==this.v);a=this.v[a];n(a);return a(this)}; +J.prototype.runReadCallback=J.prototype.Ic;J.prototype.Yb=function(a,b){n(2==this.b);var c=this.a.c,d=this.a.o();d=this.a.B()+d;this.a.setEnd(d);b(a,this);this.a.Ma(d);this.a.setEnd(c)};J.prototype.readMessage=J.prototype.Yb;J.prototype.Ub=function(a,b,c){n(3==this.b);n(this.c==a);c(b,this);this.h||4==this.b||(p("Group submessage did not end with an END_GROUP tag"),this.h=!0)};J.prototype.readGroup=J.prototype.Ub; +J.prototype.Gb=function(){n(2==this.b);var a=this.a.o(),b=this.a.B(),c=b+a;a=Wa(this.a.Y(),b,a);this.a.Ma(c);return a};J.prototype.getFieldDecoder=J.prototype.Gb;J.prototype.P=function(){n(0==this.b);return this.a.da()};J.prototype.readInt32=J.prototype.P;J.prototype.Wb=function(){n(0==this.b);return this.a.Ea()};J.prototype.readInt32String=J.prototype.Wb;J.prototype.ba=function(){n(0==this.b);return this.a.sa()};J.prototype.readInt64=J.prototype.ba;J.prototype.ca=function(){n(0==this.b);return this.a.Fa()}; +J.prototype.readInt64String=J.prototype.ca;J.prototype.m=function(){n(0==this.b);return this.a.o()};J.prototype.readUint32=J.prototype.m;J.prototype.Fc=function(){n(0==this.b);return this.a.O()};J.prototype.readUint32String=J.prototype.Fc;J.prototype.ga=function(){n(0==this.b);return this.a.Ga()};J.prototype.readUint64=J.prototype.ga;J.prototype.ha=function(){n(0==this.b);return this.a.Ha()};J.prototype.readUint64String=J.prototype.ha;J.prototype.zc=function(){n(0==this.b);return this.a.Ia()}; +J.prototype.readSint32=J.prototype.zc;J.prototype.Ac=function(){n(0==this.b);return this.a.Ja()};J.prototype.readSint64=J.prototype.Ac;J.prototype.Bc=function(){n(0==this.b);return this.a.Ka()};J.prototype.readSint64String=J.prototype.Bc;J.prototype.Rb=function(){n(5==this.b);return this.a.m()};J.prototype.readFixed32=J.prototype.Rb;J.prototype.Sb=function(){n(1==this.b);return this.a.ga()};J.prototype.readFixed64=J.prototype.Sb;J.prototype.Tb=function(){n(1==this.b);return this.a.ha()}; +J.prototype.readFixed64String=J.prototype.Tb;J.prototype.vc=function(){n(5==this.b);return this.a.P()};J.prototype.readSfixed32=J.prototype.vc;J.prototype.wc=function(){n(5==this.b);return this.a.P().toString()};J.prototype.readSfixed32String=J.prototype.wc;J.prototype.xc=function(){n(1==this.b);return this.a.ba()};J.prototype.readSfixed64=J.prototype.xc;J.prototype.yc=function(){n(1==this.b);return this.a.ca()};J.prototype.readSfixed64String=J.prototype.yc; +J.prototype.aa=function(){n(5==this.b);return this.a.aa()};J.prototype.readFloat=J.prototype.aa;J.prototype.Z=function(){n(1==this.b);return this.a.Z()};J.prototype.readDouble=J.prototype.Z;J.prototype.pa=function(){n(0==this.b);return!!this.a.o()};J.prototype.readBool=J.prototype.pa;J.prototype.ra=function(){n(0==this.b);return this.a.sa()};J.prototype.readEnum=J.prototype.ra;J.prototype.fa=function(){n(2==this.b);var a=this.a.o();return this.a.fa(a)};J.prototype.readString=J.prototype.fa; +J.prototype.qa=function(){n(2==this.b);var a=this.a.o();return this.a.qa(a)};J.prototype.readBytes=J.prototype.qa;J.prototype.ia=function(){n(0==this.b);return this.a.ia()};J.prototype.readVarintHash64=J.prototype.ia;J.prototype.Cc=function(){n(0==this.b);return this.a.fb()};J.prototype.readSintHash64=J.prototype.Cc;J.prototype.w=function(a){n(0==this.b);return this.a.w(a)};J.prototype.readSplitVarint64=J.prototype.w; +J.prototype.ea=function(a){n(0==this.b);return this.a.w(function(b,c){return Ma(b,c,a)})};J.prototype.readSplitZigzagVarint64=J.prototype.ea;J.prototype.$=function(){n(1==this.b);return this.a.$()};J.prototype.readFixedHash64=J.prototype.$;J.prototype.ta=function(a){n(1==this.b);return this.a.ta(a)};J.prototype.readSplitFixed64=J.prototype.ta;function L(a,b){n(2==a.b);var c=a.a.o();c=a.a.B()+c;for(var d=[];a.a.B()b.length?c.length:b.length;a.b&&(d[0]=a.b,f=1);for(;fa);for(n(0<=b&&4294967296>b);0>>7|b<<25)>>>0,b>>>=7;this.a.push(a)};S.prototype.writeSplitVarint64=S.prototype.l; +S.prototype.A=function(a,b){n(a==Math.floor(a));n(b==Math.floor(b));n(0<=a&&4294967296>a);n(0<=b&&4294967296>b);this.s(a);this.s(b)};S.prototype.writeSplitFixed64=S.prototype.A;S.prototype.j=function(a){n(a==Math.floor(a));for(n(0<=a&&4294967296>a);127>>=7;this.a.push(a)};S.prototype.writeUnsignedVarint32=S.prototype.j;S.prototype.M=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);if(0<=a)this.j(a);else{for(var b=0;9>b;b++)this.a.push(a&127|128),a>>=7;this.a.push(1)}}; +S.prototype.writeSignedVarint32=S.prototype.M;S.prototype.va=function(a){n(a==Math.floor(a));n(0<=a&&1.8446744073709552E19>a);A(a);this.l(y,z)};S.prototype.writeUnsignedVarint64=S.prototype.va;S.prototype.ua=function(a){n(a==Math.floor(a));n(-9223372036854775808<=a&&0x7fffffffffffffff>a);A(a);this.l(y,z)};S.prototype.writeSignedVarint64=S.prototype.ua;S.prototype.wa=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);this.j((a<<1^a>>31)>>>0)};S.prototype.writeZigzagVarint32=S.prototype.wa; +S.prototype.xa=function(a){n(a==Math.floor(a));n(-9223372036854775808<=a&&0x7fffffffffffffff>a);Ga(a);this.l(y,z)};S.prototype.writeZigzagVarint64=S.prototype.xa;S.prototype.Ta=function(a){this.W(H(a))};S.prototype.writeZigzagVarint64String=S.prototype.Ta;S.prototype.W=function(a){var b=this;C(a);Ja(y,z,function(c,d){b.l(c>>>0,d>>>0)})};S.prototype.writeZigzagVarintHash64=S.prototype.W;S.prototype.be=function(a){n(a==Math.floor(a));n(0<=a&&256>a);this.a.push(a>>>0&255)};S.prototype.writeUint8=S.prototype.be; +S.prototype.ae=function(a){n(a==Math.floor(a));n(0<=a&&65536>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255)};S.prototype.writeUint16=S.prototype.ae;S.prototype.s=function(a){n(a==Math.floor(a));n(0<=a&&4294967296>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255);this.a.push(a>>>16&255);this.a.push(a>>>24&255)};S.prototype.writeUint32=S.prototype.s;S.prototype.V=function(a){n(a==Math.floor(a));n(0<=a&&1.8446744073709552E19>a);Fa(a);this.s(y);this.s(z)};S.prototype.writeUint64=S.prototype.V; +S.prototype.Qc=function(a){n(a==Math.floor(a));n(-128<=a&&128>a);this.a.push(a>>>0&255)};S.prototype.writeInt8=S.prototype.Qc;S.prototype.Pc=function(a){n(a==Math.floor(a));n(-32768<=a&&32768>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255)};S.prototype.writeInt16=S.prototype.Pc;S.prototype.S=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255);this.a.push(a>>>16&255);this.a.push(a>>>24&255)};S.prototype.writeInt32=S.prototype.S; +S.prototype.T=function(a){n(a==Math.floor(a));n(-9223372036854775808<=a&&0x7fffffffffffffff>a);A(a);this.A(y,z)};S.prototype.writeInt64=S.prototype.T;S.prototype.ka=function(a){n(a==Math.floor(a));n(-9223372036854775808<=+a&&0x7fffffffffffffff>+a);C(H(a));this.A(y,z)};S.prototype.writeInt64String=S.prototype.ka;S.prototype.L=function(a){n(Infinity===a||-Infinity===a||isNaN(a)||-3.4028234663852886E38<=a&&3.4028234663852886E38>=a);Ha(a);this.s(y)};S.prototype.writeFloat=S.prototype.L; +S.prototype.J=function(a){n(Infinity===a||-Infinity===a||isNaN(a)||-1.7976931348623157E308<=a&&1.7976931348623157E308>=a);Ia(a);this.s(y);this.s(z)};S.prototype.writeDouble=S.prototype.J;S.prototype.I=function(a){n("boolean"===typeof a||"number"===typeof a);this.a.push(a?1:0)};S.prototype.writeBool=S.prototype.I;S.prototype.R=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);this.M(a)};S.prototype.writeEnum=S.prototype.R;S.prototype.ja=function(a){this.a.push.apply(this.a,a)}; +S.prototype.writeBytes=S.prototype.ja;S.prototype.N=function(a){C(a);this.l(y,z)};S.prototype.writeVarintHash64=S.prototype.N;S.prototype.K=function(a){C(a);this.s(y);this.s(z)};S.prototype.writeFixedHash64=S.prototype.K; +S.prototype.U=function(a){var b=this.a.length;ta(a);for(var c=0;cd)this.a.push(d);else if(2048>d)this.a.push(d>>6|192),this.a.push(d&63|128);else if(65536>d)if(55296<=d&&56319>=d&&c+1=f&&(d=1024*(d-55296)+f-56320+65536,this.a.push(d>>18|240),this.a.push(d>>12&63|128),this.a.push(d>>6&63|128),this.a.push(d&63|128),c++)}else this.a.push(d>>12|224),this.a.push(d>>6&63|128),this.a.push(d&63|128)}return this.a.length- +b};S.prototype.writeString=S.prototype.U;function T(a,b){this.lo=a;this.hi=b}g("jspb.arith.UInt64",T,void 0);T.prototype.cmp=function(a){return this.hi>>1|(this.hi&1)<<31)>>>0,this.hi>>>1>>>0)};T.prototype.rightShift=T.prototype.La;T.prototype.Da=function(){return new T(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)};T.prototype.leftShift=T.prototype.Da; +T.prototype.cb=function(){return!!(this.hi&2147483648)};T.prototype.msb=T.prototype.cb;T.prototype.Ob=function(){return!!(this.lo&1)};T.prototype.lsb=T.prototype.Ob;T.prototype.Ua=function(){return 0==this.lo&&0==this.hi};T.prototype.zero=T.prototype.Ua;T.prototype.add=function(a){return new T((this.lo+a.lo&4294967295)>>>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};T.prototype.add=T.prototype.add; +T.prototype.sub=function(a){return new T((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};T.prototype.sub=T.prototype.sub;function rb(a,b){var c=a&65535;a>>>=16;var d=b&65535,f=b>>>16;b=c*d+65536*(c*f&65535)+65536*(a*d&65535);for(c=a*f+(c*f>>>16)+(a*d>>>16);4294967296<=b;)b-=4294967296,c+=1;return new T(b>>>0,c>>>0)}T.mul32x32=rb;T.prototype.eb=function(a){var b=rb(this.lo,a);a=rb(this.hi,a);a.hi=a.lo;a.lo=0;return b.add(a)};T.prototype.mul=T.prototype.eb; +T.prototype.Xa=function(a){if(0==a)return[];var b=new T(0,0),c=new T(this.lo,this.hi);a=new T(a,0);for(var d=new T(1,0);!a.cb();)a=a.Da(),d=d.Da();for(;!d.Ua();)0>=a.cmp(c)&&(b=b.add(d),c=c.sub(a)),a=a.La(),d=d.La();return[b,c]};T.prototype.div=T.prototype.Xa;T.prototype.toString=function(){for(var a="",b=this;!b.Ua();){b=b.Xa(10);var c=b[0];a=b[1].lo+a;b=c}""==a&&(a="0");return a};T.prototype.toString=T.prototype.toString; +function U(a){for(var b=new T(0,0),c=new T(0,0),d=0;da[d]||"9">>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};V.prototype.add=V.prototype.add; +V.prototype.sub=function(a){return new V((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};V.prototype.sub=V.prototype.sub;V.prototype.clone=function(){return new V(this.lo,this.hi)};V.prototype.clone=V.prototype.clone;V.prototype.toString=function(){var a=0!=(this.hi&2147483648),b=new T(this.lo,this.hi);a&&(b=(new T(0,0)).sub(b));return(a?"-":"")+b.toString()};V.prototype.toString=V.prototype.toString; +function sb(a){var b=0>>=7,a.b++;b.push(c);a.b++}W.prototype.pb=function(a,b,c){tb(this,a.subarray(b,c))};W.prototype.writeSerializedMessage=W.prototype.pb; +W.prototype.Pb=function(a,b,c){null!=a&&null!=b&&null!=c&&this.pb(a,b,c)};W.prototype.maybeWriteSerializedMessage=W.prototype.Pb;W.prototype.reset=function(){this.c=[];this.a.end();this.b=0;this.h=[]};W.prototype.reset=W.prototype.reset;W.prototype.ab=function(){n(0==this.h.length);for(var a=new Uint8Array(this.b+this.a.length()),b=this.c,c=b.length,d=0,f=0;fb),vb(this,a,b))};W.prototype.writeInt32=W.prototype.S; +W.prototype.ob=function(a,b){null!=b&&(b=parseInt(b,10),n(-2147483648<=b&&2147483648>b),vb(this,a,b))};W.prototype.writeInt32String=W.prototype.ob;W.prototype.T=function(a,b){null!=b&&(n(-9223372036854775808<=b&&0x7fffffffffffffff>b),null!=b&&(Y(this,a,0),this.a.ua(b)))};W.prototype.writeInt64=W.prototype.T;W.prototype.ka=function(a,b){null!=b&&(b=sb(b),Y(this,a,0),this.a.l(b.lo,b.hi))};W.prototype.writeInt64String=W.prototype.ka; +W.prototype.s=function(a,b){null!=b&&(n(0<=b&&4294967296>b),ub(this,a,b))};W.prototype.writeUint32=W.prototype.s;W.prototype.ub=function(a,b){null!=b&&(b=parseInt(b,10),n(0<=b&&4294967296>b),ub(this,a,b))};W.prototype.writeUint32String=W.prototype.ub;W.prototype.V=function(a,b){null!=b&&(n(0<=b&&1.8446744073709552E19>b),null!=b&&(Y(this,a,0),this.a.va(b)))};W.prototype.writeUint64=W.prototype.V;W.prototype.vb=function(a,b){null!=b&&(b=U(b),Y(this,a,0),this.a.l(b.lo,b.hi))}; +W.prototype.writeUint64String=W.prototype.vb;W.prototype.rb=function(a,b){null!=b&&(n(-2147483648<=b&&2147483648>b),null!=b&&(Y(this,a,0),this.a.wa(b)))};W.prototype.writeSint32=W.prototype.rb;W.prototype.sb=function(a,b){null!=b&&(n(-9223372036854775808<=b&&0x7fffffffffffffff>b),null!=b&&(Y(this,a,0),this.a.xa(b)))};W.prototype.writeSint64=W.prototype.sb;W.prototype.$d=function(a,b){null!=b&&null!=b&&(Y(this,a,0),this.a.W(b))};W.prototype.writeSintHash64=W.prototype.$d; +W.prototype.Zd=function(a,b){null!=b&&null!=b&&(Y(this,a,0),this.a.Ta(b))};W.prototype.writeSint64String=W.prototype.Zd;W.prototype.Pa=function(a,b){null!=b&&(n(0<=b&&4294967296>b),Y(this,a,5),this.a.s(b))};W.prototype.writeFixed32=W.prototype.Pa;W.prototype.Qa=function(a,b){null!=b&&(n(0<=b&&1.8446744073709552E19>b),Y(this,a,1),this.a.V(b))};W.prototype.writeFixed64=W.prototype.Qa;W.prototype.nb=function(a,b){null!=b&&(b=U(b),Y(this,a,1),this.a.A(b.lo,b.hi))};W.prototype.writeFixed64String=W.prototype.nb; +W.prototype.Ra=function(a,b){null!=b&&(n(-2147483648<=b&&2147483648>b),Y(this,a,5),this.a.S(b))};W.prototype.writeSfixed32=W.prototype.Ra;W.prototype.Sa=function(a,b){null!=b&&(n(-9223372036854775808<=b&&0x7fffffffffffffff>b),Y(this,a,1),this.a.T(b))};W.prototype.writeSfixed64=W.prototype.Sa;W.prototype.qb=function(a,b){null!=b&&(b=sb(b),Y(this,a,1),this.a.A(b.lo,b.hi))};W.prototype.writeSfixed64String=W.prototype.qb;W.prototype.L=function(a,b){null!=b&&(Y(this,a,5),this.a.L(b))}; +W.prototype.writeFloat=W.prototype.L;W.prototype.J=function(a,b){null!=b&&(Y(this,a,1),this.a.J(b))};W.prototype.writeDouble=W.prototype.J;W.prototype.I=function(a,b){null!=b&&(n("boolean"===typeof b||"number"===typeof b),Y(this,a,0),this.a.I(b))};W.prototype.writeBool=W.prototype.I;W.prototype.R=function(a,b){null!=b&&(n(-2147483648<=b&&2147483648>b),Y(this,a,0),this.a.M(b))};W.prototype.writeEnum=W.prototype.R;W.prototype.U=function(a,b){null!=b&&(a=X(this,a),this.a.U(b),Z(this,a))}; +W.prototype.writeString=W.prototype.U;W.prototype.ja=function(a,b){null!=b&&(b=Ua(b),Y(this,a,2),this.a.j(b.length),tb(this,b))};W.prototype.writeBytes=W.prototype.ja;W.prototype.Rc=function(a,b,c){null!=b&&(a=X(this,a),c(b,this),Z(this,a))};W.prototype.writeMessage=W.prototype.Rc;W.prototype.Sc=function(a,b,c){null!=b&&(Y(this,1,3),Y(this,2,0),this.a.M(a),a=X(this,3),c(b,this),Z(this,a),Y(this,1,4))};W.prototype.writeMessageSet=W.prototype.Sc; +W.prototype.Oc=function(a,b,c){null!=b&&(Y(this,a,3),c(b,this),Y(this,a,4))};W.prototype.writeGroup=W.prototype.Oc;W.prototype.K=function(a,b){null!=b&&(n(8==b.length),Y(this,a,1),this.a.K(b))};W.prototype.writeFixedHash64=W.prototype.K;W.prototype.N=function(a,b){null!=b&&(n(8==b.length),Y(this,a,0),this.a.N(b))};W.prototype.writeVarintHash64=W.prototype.N;W.prototype.A=function(a,b,c){Y(this,a,1);this.a.A(b,c)};W.prototype.writeSplitFixed64=W.prototype.A; +W.prototype.l=function(a,b,c){Y(this,a,0);this.a.l(b,c)};W.prototype.writeSplitVarint64=W.prototype.l;W.prototype.tb=function(a,b,c){Y(this,a,0);var d=this.a;Ja(b,c,function(f,h){d.l(f>>>0,h>>>0)})};W.prototype.writeSplitZigzagVarint64=W.prototype.tb;W.prototype.Ed=function(a,b){if(null!=b)for(var c=0;c>>0,t>>>0)});Z(this,a)}}; +W.prototype.writePackedSplitZigzagVarint64=W.prototype.od;W.prototype.dd=function(a,b){if(null!=b&&b.length){a=X(this,a);for(var c=0;cc&&(c=Math.max(c+f,0));c>>0),ua=0;function va(a,b,c){return a.call.apply(a.bind,arguments)} +function wa(a,b,c){if(!a)throw Error();if(2b?1:0};var I;a:{var Ra=x.navigator;if(Ra){var Sa=Ra.userAgent;if(Sa){I=Sa;break a}}I=""};function Ta(a,b){for(var c in a)b.call(void 0,a[c],c,a)}function Ua(a,b){var c={},d;for(d in a)c[d]=b.call(void 0,a[d],d,a);return c}var Va="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Wa(a,b){for(var c,d,f=1;fparseFloat(gb)){fb=String(ib);break a}}fb=gb}var $a={}; +function kb(){return Za(function(){for(var a=0,b=Pa(String(fb)).split("."),c=Pa("9").split("."),d=Math.max(b.length,c.length),f=0;0==a&&f>>0);function Bb(a){if("function"===typeof a)return a;a[Jb]||(a[Jb]=function(b){return a.handleEvent(b)});return a[Jb]};function N(){lb.call(this);this.f=new tb(this);this.U=this}B(N,lb);N.prototype[M]=!0;N.prototype.addEventListener=function(a,b,c,d){zb(this,a,b,c,d)};N.prototype.removeEventListener=function(a,b,c,d){Hb(this,a,b,c,d)};function O(a,b){a=a.U;var c=b.type||b;if("string"===typeof b)b=new J(b,a);else if(b instanceof J)b.target=b.target||a;else{var d=b;b=new J(c,a);Wa(b,d)}a=b.a=a;Kb(a,c,!0,b);Kb(a,c,!1,b)} +function Kb(a,b,c,d){if(b=a.f.a[String(b)]){b=b.concat();for(var f=!0,g=0;g=f.value}d&&(b=b||Ob,d=ac(bc(),a.getName()),"function"===typeof c&&(c=c()),Ub||(Ub=new Tb),a=a.getName(),a=new Vb(b,c,a),Yb(d,a))}function P(a,b){a&&cc(a,Rb,b)};function dc(){}dc.prototype.a=null;function ec(a){var b;(b=a.a)||(b={},fc(a)&&(b[0]=!0,b[1]=!0),b=a.a=b);return b};var gc;function hc(){}B(hc,dc);function ic(a){return(a=fc(a))?new ActiveXObject(a):new XMLHttpRequest}function fc(a){if(!a.b&&"undefined"==typeof XMLHttpRequest&&"undefined"!=typeof ActiveXObject){for(var b=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],c=0;c2*this.size&&pc(this),!0):!1};function pc(a){if(a.size!=a.j.length){for(var b=0,c=0;b=d.j.length)throw lc;var g=d.j[b++];return a?g:d.o[g]};f.next=f.a.bind(f);return f};function U(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var qc=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^\\/?#]*)@)?([^\\/?#]*?)(?::([0-9]+))?(?=[\\/?#]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/;function rc(a){N.call(this);this.headers=new oc;this.C=a||null;this.c=!1;this.J=this.a=null;this.P=this.v="";this.g=0;this.l="";this.i=this.N=this.s=this.L=!1;this.h=0;this.w=null;this.m=sc;this.I=this.M=!1}B(rc,N);var sc="";rc.prototype.b=ac(bc(),"goog.net.XhrIo",void 0).g;var tc=/^https?$/i,uc=["POST","PUT"]; +function vc(a,b,c){if(a.a)throw Error("[goog.net.XhrIo] Object is active with another request="+a.v+"; newUri="+b);a.v=b;a.l="";a.g=0;a.P="POST";a.L=!1;a.c=!0;a.a=a.C?ic(a.C):ic(gc);a.J=a.C?ec(a.C):ec(gc);a.a.onreadystatechange=z(a.R,a);try{P(a.b,V(a,"Opening Xhr")),a.N=!0,a.a.open("POST",String(b),!0),a.N=!1}catch(g){P(a.b,V(a,"Error opening Xhr: "+g.message));wc(a,g);return}b=c||"";c=a.headers.clone();var d=c.G().find(function(g){return"content-type"==g.toLowerCase()}),f=x.FormData&&b instanceof +x.FormData;!(0<=Oa(uc,"POST"))||d||f||c.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");c.forEach(function(g,e){this.a.setRequestHeader(e,g)},a);a.m&&(a.a.responseType=a.m);"withCredentials"in a.a&&a.a.withCredentials!==a.M&&(a.a.withCredentials=a.M);try{xc(a),0>4);64!=e&&(b(g<<4&240|e>>2),64!=h&&b(e<<6&192|h))}} +function Ic(){if(!Fc){Fc={};for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),b=["+/=","+/","-_=","-_.","-_"],c=0;5>c;c++){var d=a.concat(b[c].split(""));Ec[c]=d;for(var f=0;fh&&(h=f.length),e=f.indexOf("?"), +0>e||e>h?(e=h,k=""):k=f.substring(e+1,h),f=[f.substr(0,e),k,f.substr(h)],h=f[1],f[1]=m?h?h+"&"+m:m:h,f=f[0]+(f[1]?"?"+f[1]:"")+f[2]}else f.a("$httpHeaders",h)}b=(0,d.a)(b.getRequestMessage());d=b.length;m=[0,0,0,0];h=new Uint8Array(5+d);for(e=3;0<=e;e--)m[e]=d%256,d>>>=8;h.set(new Uint8Array(m),1);h.set(b,5);b=h;if("text"==a.a){a=b;var p;void 0===p&&(p=0);Ic();p=Ec[p];b=Array(Math.floor(a.length/3));d=p[64]||"";for(m=h=0;h>2];l=p[(l&3)<<4|q>>4]; +q=p[(q&15)<<2|k>>6];k=p[k&63];b[m++]=e+l+q+k}e=0;k=d;switch(a.length-h){case 2:e=a[h+1],k=p[(e&15)<<2]||d;case 1:a=a[h],b[m]=p[a>>2]+p[(a&3)<<4|e>>4]+k+d}b=b.join("")}else"binary"==a.a&&(c.m="arraybuffer");vc(c,f,b);return g} +function Qc(a,b,c){var d=!1,f=null,g=!1;a.on("data",function(e){d=!0;f=e});a.on("error",function(e){0==e.code||g||(g=!0,b(e,null))});a.on("status",function(e){0==e.code||g?c&&b(null,null,e):(g=!0,b({code:e.code,message:e.details,metadata:e.metadata},null))});if(c)a.on("metadata",function(e){b(null,null,null,e)});a.on("end",function(){g||(d?c?b(null,f,null,null,!0):b(null,f):b({code:2,message:"Incomplete response"}));c&&b(null,null)})} +function Oc(a,b){var c=a;b.forEach(function(d){var f=c;c=function(g){return d.intercept(g,f)}});return c}Z.prototype.serverStreaming=Z.prototype.Y;Z.prototype.unaryCall=Z.prototype.unaryCall;Z.prototype.thenableCall=Z.prototype.S;Z.prototype.rpcCall=Z.prototype.X;module.exports.CallOptions=xa;module.exports.MethodDescriptor=ya;module.exports.GrpcWebClientBase=Z;module.exports.RpcError=E;module.exports.StatusCode={OK:0,CANCELLED:1,UNKNOWN:2,INVALID_ARGUMENT:3,DEADLINE_EXCEEDED:4,NOT_FOUND:5,ALREADY_EXISTS:6,PERMISSION_DENIED:7,UNAUTHENTICATED:16,RESOURCE_EXHAUSTED:8,FAILED_PRECONDITION:9,ABORTED:10,OUT_OF_RANGE:11,UNIMPLEMENTED:12,INTERNAL:13,UNAVAILABLE:14,DATA_LOSS:15};module.exports.MethodType={UNARY:"unary",SERVER_STREAMING:"server_streaming",BIDI_STREAMING:"bidi_streaming"}; +Lb="undefined"!==typeof globalThis&&globalThis||self; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},[3]); diff --git a/extension/html/rpc/base_pb.js b/extension/html/rpc/base_pb.js new file mode 100644 index 0000000..a4a8f12 --- /dev/null +++ b/extension/html/rpc/base_pb.js @@ -0,0 +1,460 @@ +// source: base.proto +/** + * @fileoverview + * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = + (typeof globalThis !== 'undefined' && globalThis) || + (typeof window !== 'undefined' && window) || + (typeof global !== 'undefined' && global) || + (typeof self !== 'undefined' && self) || + (function () { return this; }).call(null) || + Function('return this')(); + +goog.exportSymbol('proto.hiddifyrpc.Empty', null, global); +goog.exportSymbol('proto.hiddifyrpc.HelloRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.HelloResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.ResponseCode', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.HelloRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.HelloRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.HelloRequest.displayName = 'proto.hiddifyrpc.HelloRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.HelloResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.HelloResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.HelloResponse.displayName = 'proto.hiddifyrpc.HelloResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.Empty = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.Empty, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.Empty.displayName = 'proto.hiddifyrpc.Empty'; +} + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.HelloRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.HelloRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.HelloRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloRequest.toObject = function(includeInstance, msg) { + var f, obj = { +name: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.HelloRequest} + */ +proto.hiddifyrpc.HelloRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.HelloRequest; + return proto.hiddifyrpc.HelloRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.HelloRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.HelloRequest} + */ +proto.hiddifyrpc.HelloRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.HelloRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.HelloRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.HelloRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.hiddifyrpc.HelloRequest.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.HelloRequest} returns this + */ +proto.hiddifyrpc.HelloRequest.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.HelloResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.HelloResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.HelloResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloResponse.toObject = function(includeInstance, msg) { + var f, obj = { +message: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.HelloResponse} + */ +proto.hiddifyrpc.HelloResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.HelloResponse; + return proto.hiddifyrpc.HelloResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.HelloResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.HelloResponse} + */ +proto.hiddifyrpc.HelloResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.HelloResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.HelloResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.HelloResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.HelloResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string message = 1; + * @return {string} + */ +proto.hiddifyrpc.HelloResponse.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.HelloResponse} returns this + */ +proto.hiddifyrpc.HelloResponse.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.Empty.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.Empty.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.Empty} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Empty.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.Empty} + */ +proto.hiddifyrpc.Empty.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.Empty; + return proto.hiddifyrpc.Empty.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.Empty} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.Empty} + */ +proto.hiddifyrpc.Empty.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.Empty.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.Empty.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.Empty} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Empty.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + +/** + * @enum {number} + */ +proto.hiddifyrpc.ResponseCode = { + OK: 0, + FAILED: 1 +}; + +goog.object.extend(exports, proto.hiddifyrpc); diff --git a/extension/html/rpc/client.js b/extension/html/rpc/client.js new file mode 100644 index 0000000..745d9f3 --- /dev/null +++ b/extension/html/rpc/client.js @@ -0,0 +1,6 @@ +const extension = require("./extension_grpc_web_pb.js"); + +const grpcServerAddress = '/'; +const client = new extension.ExtensionHostServicePromiseClient(grpcServerAddress, null, null); + +module.exports = { client ,extension}; \ No newline at end of file diff --git a/extension/html/rpc/extension.js b/extension/html/rpc/extension.js new file mode 100644 index 0000000..49e4d8b --- /dev/null +++ b/extension/html/rpc/extension.js @@ -0,0 +1,7 @@ +const { listExtensions } = require('./extensionList.js'); + +window.onload = () => { + listExtensions(); +}; + + diff --git a/extension/html/rpc/extensionList.js b/extension/html/rpc/extensionList.js new file mode 100644 index 0000000..0ad9e39 --- /dev/null +++ b/extension/html/rpc/extensionList.js @@ -0,0 +1,82 @@ + +const { client,extension } = require('./client.js'); +async function listExtensions() { + $("#extension-list-container").show(); + $("#extension-page-container").hide(); + + try { + const extensionListContainer = document.getElementById('extension-list-container'); + extensionListContainer.innerHTML = ''; // Clear previous entries + const response = await client.listExtensions(new extension.Empty(), {}); + const header = document.createElement('h1'); + header.classList.add('mb-4'); + header.textContent = "Extension List"; + extensionListContainer.appendChild(header); + + const extensionList = response.getExtensionsList(); + extensionList.forEach(ext => { + const listItem = createExtensionListItem(ext); + extensionListContainer.appendChild(listItem); + }); + } catch (err) { + console.error('Error listing extensions:', err); + } +} + +function createExtensionListItem(ext) { + const listItem = document.createElement('li'); + listItem.className = 'list-group-item d-flex justify-content-between align-items-center'; + listItem.setAttribute('data-extension-id', ext.getId()); + + const contentDiv = document.createElement('div'); + + const titleElement = document.createElement('span'); + titleElement.innerHTML = `${ext.getTitle()}`; + contentDiv.appendChild(titleElement); + + const descriptionElement = document.createElement('p'); + descriptionElement.className = 'mb-0'; + descriptionElement.textContent = ext.getDescription(); + contentDiv.appendChild(descriptionElement); + + listItem.appendChild(contentDiv); + + const switchDiv = createSwitchElement(ext); + listItem.appendChild(switchDiv); + const {openExtensionPage} = require('./extensionPage.js'); + + listItem.addEventListener('click', () => openExtensionPage(ext.getId())); + + return listItem; +} + +function createSwitchElement(ext) { + const switchDiv = document.createElement('div'); + switchDiv.className = 'form-check form-switch'; + + const switchButton = document.createElement('input'); + switchButton.type = 'checkbox'; + switchButton.className = 'form-check-input'; + switchButton.checked = ext.getEnable(); + switchButton.addEventListener('change', () => toggleExtension(ext.getId(), switchButton.checked)); + + switchDiv.appendChild(switchButton); + return switchDiv; +} + +async function toggleExtension(extensionId, enable) { + const request = new extension.EditExtensionRequest(); + request.setExtensionId(extensionId); + request.setEnable(enable); + + try { + await client.editExtension(request, {}); + console.log(`Extension ${extensionId} updated to ${enable ? 'enabled' : 'disabled'}`); + } catch (err) { + console.error('Error updating extension status:', err); + } +} + + + +module.exports = { listExtensions }; \ No newline at end of file diff --git a/extension/html/rpc/extensionPage.js b/extension/html/rpc/extensionPage.js new file mode 100644 index 0000000..5adfe2d --- /dev/null +++ b/extension/html/rpc/extensionPage.js @@ -0,0 +1,85 @@ +const { client,extension } = require('./client.js'); +const { renderForm } = require('./formRenderer.js'); +const { listExtensions } = require('./extensionList.js'); +var currentExtensionId=undefined; +function openExtensionPage(extensionId) { + currentExtensionId=extensionId; + $("#extension-list-container").hide(); + $("#extension-page-container").show(); + const request = new extension.ExtensionRequest(); + request.setExtensionId(extensionId); + + const stream = client.connect(request, {}); + + stream.on('data', (response) => { + + if (response.getExtensionId() === currentExtensionId) { + ui=JSON.parse(response.getJsonUi()) + if(response.getType()== proto.hiddifyrpc.ExtensionResponseType.SHOW_DIALOG) { + renderForm(ui, "dialog",handleSubmitButtonClick,handleCancelButtonClick,undefined); + }else{ + renderForm(ui, "",handleSubmitButtonClick,handleCancelButtonClick,handleStopButtonClick); + } + + + } + }); + + stream.on('error', (err) => { + console.error('Error opening extension page:', err); + }); + + stream.on('end', () => { + console.log('Stream ended'); + }); +} + +async function handleSubmitButtonClick(event) { + event.preventDefault(); + const formData = new FormData(event.target.closest('form')); + const request = new extension.ExtensionRequest(); + + formData.forEach((value, key) => { + request.getDataMap()[key] = value; + }); + request.setExtensionId(currentExtensionId); + + try { + await client.submitForm(request, {}); + console.log('Form submitted successfully.'); + } catch (err) { + console.error('Error submitting form:', err); + } +} + +async function handleCancelButtonClick(event) { + event.preventDefault(); + const request = new extension.ExtensionRequest(); + request.setExtensionId(currentExtensionId); + + try { + await client.cancel(request, {}); + console.log('Extension cancelled successfully.'); + } catch (err) { + console.error('Error cancelling extension:', err); + } +} + +async function handleStopButtonClick(event) { + event.preventDefault(); + const request = new extension.ExtensionRequest(); + request.setExtensionId(currentExtensionId); + + try { + await client.stop(request, {}); + console.log('Extension stopped successfully.'); + currentExtensionId = undefined; + listExtensions(); // Return to the extension list + } catch (err) { + console.error('Error stopping extension:', err); + } +} + + + +module.exports = { openExtensionPage }; \ No newline at end of file diff --git a/extension/html/rpc/extension_grpc_web_pb.js b/extension/html/rpc/extension_grpc_web_pb.js new file mode 100644 index 0000000..4922c96 --- /dev/null +++ b/extension/html/rpc/extension_grpc_web_pb.js @@ -0,0 +1,502 @@ +/** + * @fileoverview gRPC-Web generated client stub for hiddifyrpc + * @enhanceable + * @public + */ + +// Code generated by protoc-gen-grpc-web. DO NOT EDIT. +// versions: +// protoc-gen-grpc-web v1.5.0 +// protoc v5.28.0 +// source: extension.proto + + +/* eslint-disable */ +// @ts-nocheck + + + +const grpc = {}; +grpc.web = require('grpc-web'); + + +var base_pb = require('./base_pb.js') +const proto = {}; +proto.hiddifyrpc = require('./extension_pb.js'); + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.ExtensionHostServiceClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.ExtensionList>} + */ +const methodDescriptor_ExtensionHostService_ListExtensions = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/ListExtensions', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.ExtensionList, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionList.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionList)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.listExtensions = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/ListExtensions', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_ListExtensions, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.listExtensions = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/ListExtensions', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_ListExtensions); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionResponse>} + */ +const methodDescriptor_ExtensionHostService_Connect = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/Connect', + grpc.web.MethodType.SERVER_STREAMING, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionResponse, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!grpc.web.ClientReadableStream} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.connect = + function(request, metadata) { + return this.client_.serverStreaming(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Connect', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Connect); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!grpc.web.ClientReadableStream} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.connect = + function(request, metadata) { + return this.client_.serverStreaming(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Connect', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Connect); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.EditExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_EditExtension = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/EditExtension', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.EditExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.EditExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.EditExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.editExtension = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/EditExtension', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_EditExtension, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.EditExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.editExtension = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/EditExtension', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_EditExtension); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_SubmitForm = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/SubmitForm', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.submitForm = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/SubmitForm', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_SubmitForm, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.submitForm = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/SubmitForm', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_SubmitForm); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_Cancel = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/Cancel', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.cancel = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Cancel', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Cancel, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.cancel = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Cancel', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Cancel); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_Stop = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/Stop', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.stop = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Stop', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Stop, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.stop = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/Stop', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_Stop); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ExtensionRequest, + * !proto.hiddifyrpc.ExtensionActionResult>} + */ +const methodDescriptor_ExtensionHostService_GetUI = new grpc.web.MethodDescriptor( + '/hiddifyrpc.ExtensionHostService/GetUI', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ExtensionRequest, + proto.hiddifyrpc.ExtensionActionResult, + /** + * @param {!proto.hiddifyrpc.ExtensionRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ExtensionActionResult.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ExtensionActionResult)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.ExtensionHostServiceClient.prototype.getUI = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/GetUI', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_GetUI, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.ExtensionHostServicePromiseClient.prototype.getUI = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.ExtensionHostService/GetUI', + request, + metadata || {}, + methodDescriptor_ExtensionHostService_GetUI); +}; + + +module.exports = proto.hiddifyrpc; + diff --git a/extension/html/rpc/extension_pb.js b/extension/html/rpc/extension_pb.js new file mode 100644 index 0000000..fb57522 --- /dev/null +++ b/extension/html/rpc/extension_pb.js @@ -0,0 +1,1253 @@ +// source: extension.proto +/** + * @fileoverview + * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = + (typeof globalThis !== 'undefined' && globalThis) || + (typeof window !== 'undefined' && window) || + (typeof global !== 'undefined' && global) || + (typeof self !== 'undefined' && self) || + (function () { return this; }).call(null) || + Function('return this')(); + +var base_pb = require('./base_pb.js'); +goog.object.extend(proto, base_pb); +goog.exportSymbol('proto.hiddifyrpc.EditExtensionRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.Extension', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionActionResult', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionList', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.ExtensionResponseType', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionActionResult = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionActionResult, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionActionResult.displayName = 'proto.hiddifyrpc.ExtensionActionResult'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionList = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.hiddifyrpc.ExtensionList.repeatedFields_, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionList, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionList.displayName = 'proto.hiddifyrpc.ExtensionList'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.EditExtensionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.EditExtensionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.EditExtensionRequest.displayName = 'proto.hiddifyrpc.EditExtensionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.Extension = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.Extension, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.Extension.displayName = 'proto.hiddifyrpc.Extension'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionRequest.displayName = 'proto.hiddifyrpc.ExtensionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ExtensionResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ExtensionResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ExtensionResponse.displayName = 'proto.hiddifyrpc.ExtensionResponse'; +} + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionActionResult.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionActionResult} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionActionResult.toObject = function(includeInstance, msg) { + var f, obj = { +extensionId: jspb.Message.getFieldWithDefault(msg, 1, ""), +code: jspb.Message.getFieldWithDefault(msg, 2, 0), +message: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionActionResult} + */ +proto.hiddifyrpc.ExtensionActionResult.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionActionResult; + return proto.hiddifyrpc.ExtensionActionResult.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionActionResult} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionActionResult} + */ +proto.hiddifyrpc.ExtensionActionResult.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 2: + var value = /** @type {!proto.hiddifyrpc.ResponseCode} */ (reader.readEnum()); + msg.setCode(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionActionResult.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionActionResult} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionActionResult.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getCode(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional string extension_id = 1; + * @return {string} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionActionResult} returns this + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional ResponseCode code = 2; + * @return {!proto.hiddifyrpc.ResponseCode} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.getCode = function() { + return /** @type {!proto.hiddifyrpc.ResponseCode} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.ResponseCode} value + * @return {!proto.hiddifyrpc.ExtensionActionResult} returns this + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.setCode = function(value) { + return jspb.Message.setProto3EnumField(this, 2, value); +}; + + +/** + * optional string message = 3; + * @return {string} + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionActionResult} returns this + */ +proto.hiddifyrpc.ExtensionActionResult.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.hiddifyrpc.ExtensionList.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionList.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionList.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionList} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionList.toObject = function(includeInstance, msg) { + var f, obj = { +extensionsList: jspb.Message.toObjectList(msg.getExtensionsList(), + proto.hiddifyrpc.Extension.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionList} + */ +proto.hiddifyrpc.ExtensionList.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionList; + return proto.hiddifyrpc.ExtensionList.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionList} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionList} + */ +proto.hiddifyrpc.ExtensionList.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.hiddifyrpc.Extension; + reader.readMessage(value,proto.hiddifyrpc.Extension.deserializeBinaryFromReader); + msg.addExtensions(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionList.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionList.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionList} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionList.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + proto.hiddifyrpc.Extension.serializeBinaryToWriter + ); + } +}; + + +/** + * repeated Extension extensions = 1; + * @return {!Array} + */ +proto.hiddifyrpc.ExtensionList.prototype.getExtensionsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.hiddifyrpc.Extension, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.hiddifyrpc.ExtensionList} returns this +*/ +proto.hiddifyrpc.ExtensionList.prototype.setExtensionsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.hiddifyrpc.Extension=} opt_value + * @param {number=} opt_index + * @return {!proto.hiddifyrpc.Extension} + */ +proto.hiddifyrpc.ExtensionList.prototype.addExtensions = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.hiddifyrpc.Extension, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.hiddifyrpc.ExtensionList} returns this + */ +proto.hiddifyrpc.ExtensionList.prototype.clearExtensionsList = function() { + return this.setExtensionsList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.EditExtensionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.EditExtensionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.EditExtensionRequest.toObject = function(includeInstance, msg) { + var f, obj = { +extensionId: jspb.Message.getFieldWithDefault(msg, 1, ""), +enable: jspb.Message.getBooleanFieldWithDefault(msg, 2, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.EditExtensionRequest} + */ +proto.hiddifyrpc.EditExtensionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.EditExtensionRequest; + return proto.hiddifyrpc.EditExtensionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.EditExtensionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.EditExtensionRequest} + */ +proto.hiddifyrpc.EditExtensionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnable(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.EditExtensionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.EditExtensionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.EditExtensionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getEnable(); + if (f) { + writer.writeBool( + 2, + f + ); + } +}; + + +/** + * optional string extension_id = 1; + * @return {string} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.EditExtensionRequest} returns this + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional bool enable = 2; + * @return {boolean} + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.getEnable = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.EditExtensionRequest} returns this + */ +proto.hiddifyrpc.EditExtensionRequest.prototype.setEnable = function(value) { + return jspb.Message.setProto3BooleanField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.Extension.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.Extension.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.Extension} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Extension.toObject = function(includeInstance, msg) { + var f, obj = { +id: jspb.Message.getFieldWithDefault(msg, 1, ""), +title: jspb.Message.getFieldWithDefault(msg, 2, ""), +description: jspb.Message.getFieldWithDefault(msg, 3, ""), +enable: jspb.Message.getBooleanFieldWithDefault(msg, 4, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.Extension} + */ +proto.hiddifyrpc.Extension.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.Extension; + return proto.hiddifyrpc.Extension.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.Extension} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.Extension} + */ +proto.hiddifyrpc.Extension.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setTitle(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setDescription(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnable(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.Extension.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.Extension.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.Extension} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Extension.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getTitle(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getDescription(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getEnable(); + if (f) { + writer.writeBool( + 4, + f + ); + } +}; + + +/** + * optional string id = 1; + * @return {string} + */ +proto.hiddifyrpc.Extension.prototype.getId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string title = 2; + * @return {string} + */ +proto.hiddifyrpc.Extension.prototype.getTitle = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setTitle = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string description = 3; + * @return {string} + */ +proto.hiddifyrpc.Extension.prototype.getDescription = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setDescription = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional bool enable = 4; + * @return {boolean} + */ +proto.hiddifyrpc.Extension.prototype.getEnable = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.Extension} returns this + */ +proto.hiddifyrpc.Extension.prototype.setEnable = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionRequest.toObject = function(includeInstance, msg) { + var f, obj = { +extensionId: jspb.Message.getFieldWithDefault(msg, 1, ""), +dataMap: (f = msg.getDataMap()) ? f.toObject(includeInstance, undefined) : [] + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionRequest} + */ +proto.hiddifyrpc.ExtensionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionRequest; + return proto.hiddifyrpc.ExtensionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionRequest} + */ +proto.hiddifyrpc.ExtensionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 2: + var value = msg.getDataMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getDataMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } +}; + + +/** + * optional string extension_id = 1; + * @return {string} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionRequest} returns this + */ +proto.hiddifyrpc.ExtensionRequest.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * map data = 2; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.hiddifyrpc.ExtensionRequest.prototype.getDataMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 2, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.hiddifyrpc.ExtensionRequest} returns this + */ +proto.hiddifyrpc.ExtensionRequest.prototype.clearDataMap = function() { + this.getDataMap().clear(); + return this; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ExtensionResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ExtensionResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionResponse.toObject = function(includeInstance, msg) { + var f, obj = { +type: jspb.Message.getFieldWithDefault(msg, 1, 0), +extensionId: jspb.Message.getFieldWithDefault(msg, 2, ""), +jsonUi: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ExtensionResponse} + */ +proto.hiddifyrpc.ExtensionResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ExtensionResponse; + return proto.hiddifyrpc.ExtensionResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ExtensionResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ExtensionResponse} + */ +proto.hiddifyrpc.ExtensionResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.hiddifyrpc.ExtensionResponseType} */ (reader.readEnum()); + msg.setType(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setExtensionId(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setJsonUi(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ExtensionResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ExtensionResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ExtensionResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getType(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getExtensionId(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getJsonUi(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional ExtensionResponseType type = 1; + * @return {!proto.hiddifyrpc.ExtensionResponseType} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.getType = function() { + return /** @type {!proto.hiddifyrpc.ExtensionResponseType} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.ExtensionResponseType} value + * @return {!proto.hiddifyrpc.ExtensionResponse} returns this + */ +proto.hiddifyrpc.ExtensionResponse.prototype.setType = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional string extension_id = 2; + * @return {string} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.getExtensionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionResponse} returns this + */ +proto.hiddifyrpc.ExtensionResponse.prototype.setExtensionId = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string json_ui = 3; + * @return {string} + */ +proto.hiddifyrpc.ExtensionResponse.prototype.getJsonUi = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ExtensionResponse} returns this + */ +proto.hiddifyrpc.ExtensionResponse.prototype.setJsonUi = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * @enum {number} + */ +proto.hiddifyrpc.ExtensionResponseType = { + NOTHING: 0, + UPDATE_UI: 1, + SHOW_DIALOG: 2, + END: 3 +}; + +goog.object.extend(exports, proto.hiddifyrpc); diff --git a/extension/html/rpc/formRenderer.js b/extension/html/rpc/formRenderer.js new file mode 100644 index 0000000..4f710ad --- /dev/null +++ b/extension/html/rpc/formRenderer.js @@ -0,0 +1,200 @@ +const { client } = require('./client.js'); +const extension = require("./extension_grpc_web_pb.js"); + +function renderForm(json, dialog, submitAction, cancelAction, stopAction) { + const container = document.getElementById(`extension-page-container${dialog}`); + const formId = `dynamicForm${json.id}${dialog}`; + + const existingForm = document.getElementById(formId); + if (existingForm) { + existingForm.remove(); + } + const form = document.createElement('form'); + form.id = formId; + + if (dialog === "dialog") { + document.getElementById("modalLabel").textContent = json.title; + } else { + const titleElement = createTitleElement(json); + form.appendChild(titleElement); + } + addElementsToForm(form, json); + const buttonGroup = createButtonGroup(json, submitAction, cancelAction, stopAction); + if (dialog === "dialog") { + document.getElementById("modal-footer").innerHTML = ''; + document.getElementById("modal-footer").appendChild(buttonGroup); + } else { + form.appendChild(buttonGroup); + } + container.appendChild(form); +} + +function addElementsToForm(form, json) { + + + + const description = document.createElement('p'); + description.textContent = json.description; + form.appendChild(description); + + json.fields.forEach(field => { + const formGroup = createFormGroup(field); + form.appendChild(formGroup); + }); + + + return form; +} + +function createTitleElement(json) { + const title = document.createElement('h1'); + title.textContent = json.title; + return title; +} + +function createFormGroup(field) { + const formGroup = document.createElement('div'); + formGroup.classList.add('mb-3'); + + if (field.label && !field.labelHidden) { + const label = document.createElement('label'); + label.textContent = field.label; + label.setAttribute('for', field.key); + formGroup.appendChild(label); + } + + const input = createInputElement(field); + formGroup.appendChild(input); + return formGroup; +} + +function createInputElement(field) { + let input; + + switch (field.type) { + case "TextArea": + input = document.createElement('textarea'); + input.rows = field.lines || 3; + input.textContent = field.value || ''; + break; + + case "Checkbox": + case "RadioButton": + input = createCheckboxOrRadioGroup(field); + break; + + case "Switch": + input = createSwitchElement(field); + break; + + case "Select": + input = document.createElement('select'); + field.items.forEach(item => { + const option = document.createElement('option'); + option.value = item.value; + option.text = item.label; + input.appendChild(option); + }); + break; + + default: + input = document.createElement('input'); + input.type = field.type.toLowerCase(); + input.value = field.value; + break; + } + + input.id = field.key; + input.name = field.key; + if (field.readOnly) input.readOnly = true; + if (field.type == "Checkbox" || field.type == "RadioButton" || field.type == "Switch") { + + } else { + if (field.required) input.required = true; + input.classList.add('form-control'); + if (field.placeholder) input.placeholder = field.placeholder; + } + return input; +} + +function createCheckboxOrRadioGroup(field) { + const wrapper = document.createDocumentFragment(); + + field.items.forEach(item => { + const inputWrapper = document.createElement('div'); + inputWrapper.classList.add('form-check'); + + const input = document.createElement('input'); + input.type = field.type === "Checkbox" ? 'checkbox' : 'radio'; + input.classList.add('form-check-input'); + input.id = `${field.key}_${item.value}`; + input.name = field.key; // Grouping by name for radio buttons + input.value = item.value; + input.checked = field.value === item.value; + + const itemLabel = document.createElement('label'); + itemLabel.classList.add('form-check-label'); + itemLabel.setAttribute('for', input.id); + itemLabel.textContent = item.label; + + inputWrapper.appendChild(input); + inputWrapper.appendChild(itemLabel); + wrapper.appendChild(inputWrapper); + }); + + return wrapper; +} + +function createSwitchElement(field) { + const switchWrapper = document.createElement('div'); + switchWrapper.classList.add('form-check', 'form-switch'); + + const input = document.createElement('input'); + input.type = 'checkbox'; + input.classList.add('form-check-input'); + input.setAttribute('role', 'switch'); + input.id = field.key; + input.checked = field.value === "true"; + + const label = document.createElement('label'); + label.classList.add('form-check-label'); + label.setAttribute('for', field.key); + label.textContent = field.label; + + switchWrapper.appendChild(input); + switchWrapper.appendChild(label); + + return switchWrapper; +} + +function createButtonGroup(json, submitAction, cancelAction, stopAction) { + const buttonGroup = document.createElement('div'); + buttonGroup.classList.add('btn-group'); + + const cancelButton = document.createElement('button'); + cancelButton.textContent = "Cancel"; + cancelButton.classList.add('btn', 'btn-secondary'); + cancelButton.addEventListener('click', cancelAction); + buttonGroup.appendChild(cancelButton); + if (stopAction != undefined) { + const stopButton = document.createElement('button'); + stopButton.textContent = "Stop"; + stopButton.classList.add('btn', 'btn-danger'); + stopButton.addEventListener('click', stopAction); + buttonGroup.appendChild(stopButton); + } + + if (json.buttonMode === "SubmitCancel") { + const submitButton = document.createElement('button'); + submitButton.textContent = "Submit"; + submitButton.classList.add('btn', 'btn-primary'); + submitButton.addEventListener('click', submitAction); + buttonGroup.appendChild(submitButton); + } + + + return buttonGroup; +} + + +module.exports = { renderForm }; \ No newline at end of file diff --git a/extension/html/rpc/hiddify_grpc_web_pb.js b/extension/html/rpc/hiddify_grpc_web_pb.js new file mode 100644 index 0000000..6fe6f24 --- /dev/null +++ b/extension/html/rpc/hiddify_grpc_web_pb.js @@ -0,0 +1,1221 @@ +/** + * @fileoverview gRPC-Web generated client stub for hiddifyrpc + * @enhanceable + * @public + */ + +// Code generated by protoc-gen-grpc-web. DO NOT EDIT. +// versions: +// protoc-gen-grpc-web v1.5.0 +// protoc v5.28.0 +// source: hiddify.proto + + +/* eslint-disable */ +// @ts-nocheck + + + +const grpc = {}; +grpc.web = require('grpc-web'); + + +var base_pb = require('./base_pb.js') +const proto = {}; +proto.hiddifyrpc = require('./hiddify_pb.js'); + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.HelloClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.HelloPromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.HelloRequest, + * !proto.hiddifyrpc.HelloResponse>} + */ +const methodDescriptor_Hello_SayHello = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Hello/SayHello', + grpc.web.MethodType.UNARY, + base_pb.HelloRequest, + base_pb.HelloResponse, + /** + * @param {!proto.hiddifyrpc.HelloRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + base_pb.HelloResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.HelloRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.HelloResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.HelloClient.prototype.sayHello = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Hello/SayHello', + request, + metadata || {}, + methodDescriptor_Hello_SayHello, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.HelloRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.HelloPromiseClient.prototype.sayHello = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Hello/SayHello', + request, + metadata || {}, + methodDescriptor_Hello_SayHello); +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.CoreClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.CorePromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.StartRequest, + * !proto.hiddifyrpc.CoreInfoResponse>} + */ +const methodDescriptor_Core_Start = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/Start', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.StartRequest, + proto.hiddifyrpc.CoreInfoResponse, + /** + * @param {!proto.hiddifyrpc.StartRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.CoreInfoResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.StartRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.CoreInfoResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.start = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/Start', + request, + metadata || {}, + methodDescriptor_Core_Start, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.StartRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.start = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/Start', + request, + metadata || {}, + methodDescriptor_Core_Start); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.SetupRequest, + * !proto.hiddifyrpc.Response>} + */ +const methodDescriptor_Core_Setup = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/Setup', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.SetupRequest, + proto.hiddifyrpc.Response, + /** + * @param {!proto.hiddifyrpc.SetupRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.Response.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.SetupRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.Response)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.setup = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/Setup', + request, + metadata || {}, + methodDescriptor_Core_Setup, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.SetupRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.setup = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/Setup', + request, + metadata || {}, + methodDescriptor_Core_Setup); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ParseRequest, + * !proto.hiddifyrpc.ParseResponse>} + */ +const methodDescriptor_Core_Parse = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/Parse', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ParseRequest, + proto.hiddifyrpc.ParseResponse, + /** + * @param {!proto.hiddifyrpc.ParseRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.ParseResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ParseRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.ParseResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.parse = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/Parse', + request, + metadata || {}, + methodDescriptor_Core_Parse, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ParseRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.parse = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/Parse', + request, + metadata || {}, + methodDescriptor_Core_Parse); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.ChangeConfigOptionsRequest, + * !proto.hiddifyrpc.CoreInfoResponse>} + */ +const methodDescriptor_Core_ChangeConfigOptions = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/ChangeConfigOptions', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.ChangeConfigOptionsRequest, + proto.hiddifyrpc.CoreInfoResponse, + /** + * @param {!proto.hiddifyrpc.ChangeConfigOptionsRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.CoreInfoResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.ChangeConfigOptionsRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.CoreInfoResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.changeConfigOptions = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/ChangeConfigOptions', + request, + metadata || {}, + methodDescriptor_Core_ChangeConfigOptions, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.ChangeConfigOptionsRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.changeConfigOptions = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/ChangeConfigOptions', + request, + metadata || {}, + methodDescriptor_Core_ChangeConfigOptions); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.StartRequest, + * !proto.hiddifyrpc.CoreInfoResponse>} + */ +const methodDescriptor_Core_StartService = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/StartService', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.StartRequest, + proto.hiddifyrpc.CoreInfoResponse, + /** + * @param {!proto.hiddifyrpc.StartRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.CoreInfoResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.StartRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.CoreInfoResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.startService = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/StartService', + request, + metadata || {}, + methodDescriptor_Core_StartService, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.StartRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.startService = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/StartService', + request, + metadata || {}, + methodDescriptor_Core_StartService); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.CoreInfoResponse>} + */ +const methodDescriptor_Core_Stop = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/Stop', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.CoreInfoResponse, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.CoreInfoResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.CoreInfoResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.stop = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/Stop', + request, + metadata || {}, + methodDescriptor_Core_Stop, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.stop = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/Stop', + request, + metadata || {}, + methodDescriptor_Core_Stop); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.StartRequest, + * !proto.hiddifyrpc.CoreInfoResponse>} + */ +const methodDescriptor_Core_Restart = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/Restart', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.StartRequest, + proto.hiddifyrpc.CoreInfoResponse, + /** + * @param {!proto.hiddifyrpc.StartRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.CoreInfoResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.StartRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.CoreInfoResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.restart = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/Restart', + request, + metadata || {}, + methodDescriptor_Core_Restart, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.StartRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.restart = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/Restart', + request, + metadata || {}, + methodDescriptor_Core_Restart); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.SelectOutboundRequest, + * !proto.hiddifyrpc.Response>} + */ +const methodDescriptor_Core_SelectOutbound = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/SelectOutbound', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.SelectOutboundRequest, + proto.hiddifyrpc.Response, + /** + * @param {!proto.hiddifyrpc.SelectOutboundRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.Response.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.SelectOutboundRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.Response)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.selectOutbound = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/SelectOutbound', + request, + metadata || {}, + methodDescriptor_Core_SelectOutbound, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.SelectOutboundRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.selectOutbound = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/SelectOutbound', + request, + metadata || {}, + methodDescriptor_Core_SelectOutbound); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.UrlTestRequest, + * !proto.hiddifyrpc.Response>} + */ +const methodDescriptor_Core_UrlTest = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/UrlTest', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.UrlTestRequest, + proto.hiddifyrpc.Response, + /** + * @param {!proto.hiddifyrpc.UrlTestRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.Response.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.UrlTestRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.Response)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.urlTest = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/UrlTest', + request, + metadata || {}, + methodDescriptor_Core_UrlTest, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.UrlTestRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.urlTest = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/UrlTest', + request, + metadata || {}, + methodDescriptor_Core_UrlTest); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.GenerateWarpConfigRequest, + * !proto.hiddifyrpc.WarpGenerationResponse>} + */ +const methodDescriptor_Core_GenerateWarpConfig = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/GenerateWarpConfig', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.GenerateWarpConfigRequest, + proto.hiddifyrpc.WarpGenerationResponse, + /** + * @param {!proto.hiddifyrpc.GenerateWarpConfigRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.WarpGenerationResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.GenerateWarpConfigRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.WarpGenerationResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.generateWarpConfig = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/GenerateWarpConfig', + request, + metadata || {}, + methodDescriptor_Core_GenerateWarpConfig, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.GenerateWarpConfigRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.generateWarpConfig = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/GenerateWarpConfig', + request, + metadata || {}, + methodDescriptor_Core_GenerateWarpConfig); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.SystemProxyStatus>} + */ +const methodDescriptor_Core_GetSystemProxyStatus = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/GetSystemProxyStatus', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.SystemProxyStatus, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.SystemProxyStatus.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.SystemProxyStatus)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.getSystemProxyStatus = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/GetSystemProxyStatus', + request, + metadata || {}, + methodDescriptor_Core_GetSystemProxyStatus, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.getSystemProxyStatus = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/GetSystemProxyStatus', + request, + metadata || {}, + methodDescriptor_Core_GetSystemProxyStatus); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.SetSystemProxyEnabledRequest, + * !proto.hiddifyrpc.Response>} + */ +const methodDescriptor_Core_SetSystemProxyEnabled = new grpc.web.MethodDescriptor( + '/hiddifyrpc.Core/SetSystemProxyEnabled', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.SetSystemProxyEnabledRequest, + proto.hiddifyrpc.Response, + /** + * @param {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.Response.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.Response)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.CoreClient.prototype.setSystemProxyEnabled = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.Core/SetSystemProxyEnabled', + request, + metadata || {}, + methodDescriptor_Core_SetSystemProxyEnabled, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.CorePromiseClient.prototype.setSystemProxyEnabled = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.Core/SetSystemProxyEnabled', + request, + metadata || {}, + methodDescriptor_Core_SetSystemProxyEnabled); +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.TunnelServiceClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @param {string} hostname + * @param {?Object} credentials + * @param {?grpc.web.ClientOptions} options + * @constructor + * @struct + * @final + */ +proto.hiddifyrpc.TunnelServicePromiseClient = + function(hostname, credentials, options) { + if (!options) options = {}; + options.format = 'text'; + + /** + * @private @const {!grpc.web.GrpcWebClientBase} The client + */ + this.client_ = new grpc.web.GrpcWebClientBase(options); + + /** + * @private @const {string} The hostname + */ + this.hostname_ = hostname.replace(/\/+$/, ''); + +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.TunnelStartRequest, + * !proto.hiddifyrpc.TunnelResponse>} + */ +const methodDescriptor_TunnelService_Start = new grpc.web.MethodDescriptor( + '/hiddifyrpc.TunnelService/Start', + grpc.web.MethodType.UNARY, + proto.hiddifyrpc.TunnelStartRequest, + proto.hiddifyrpc.TunnelResponse, + /** + * @param {!proto.hiddifyrpc.TunnelStartRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.TunnelResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.TunnelStartRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.TunnelResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.TunnelServiceClient.prototype.start = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Start', + request, + metadata || {}, + methodDescriptor_TunnelService_Start, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.TunnelStartRequest} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.TunnelServicePromiseClient.prototype.start = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Start', + request, + metadata || {}, + methodDescriptor_TunnelService_Start); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.TunnelResponse>} + */ +const methodDescriptor_TunnelService_Stop = new grpc.web.MethodDescriptor( + '/hiddifyrpc.TunnelService/Stop', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.TunnelResponse, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.TunnelResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.TunnelResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.TunnelServiceClient.prototype.stop = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Stop', + request, + metadata || {}, + methodDescriptor_TunnelService_Stop, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.TunnelServicePromiseClient.prototype.stop = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Stop', + request, + metadata || {}, + methodDescriptor_TunnelService_Stop); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.TunnelResponse>} + */ +const methodDescriptor_TunnelService_Status = new grpc.web.MethodDescriptor( + '/hiddifyrpc.TunnelService/Status', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.TunnelResponse, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.TunnelResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.TunnelResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.TunnelServiceClient.prototype.status = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Status', + request, + metadata || {}, + methodDescriptor_TunnelService_Status, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.TunnelServicePromiseClient.prototype.status = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Status', + request, + metadata || {}, + methodDescriptor_TunnelService_Status); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.hiddifyrpc.Empty, + * !proto.hiddifyrpc.TunnelResponse>} + */ +const methodDescriptor_TunnelService_Exit = new grpc.web.MethodDescriptor( + '/hiddifyrpc.TunnelService/Exit', + grpc.web.MethodType.UNARY, + base_pb.Empty, + proto.hiddifyrpc.TunnelResponse, + /** + * @param {!proto.hiddifyrpc.Empty} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.hiddifyrpc.TunnelResponse.deserializeBinary +); + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.RpcError, ?proto.hiddifyrpc.TunnelResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.hiddifyrpc.TunnelServiceClient.prototype.exit = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Exit', + request, + metadata || {}, + methodDescriptor_TunnelService_Exit, + callback); +}; + + +/** + * @param {!proto.hiddifyrpc.Empty} request The + * request proto + * @param {?Object=} metadata User defined + * call metadata + * @return {!Promise} + * Promise that resolves to the response + */ +proto.hiddifyrpc.TunnelServicePromiseClient.prototype.exit = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/hiddifyrpc.TunnelService/Exit', + request, + metadata || {}, + methodDescriptor_TunnelService_Exit); +}; + + +module.exports = proto.hiddifyrpc; + diff --git a/extension/html/rpc/hiddify_pb.js b/extension/html/rpc/hiddify_pb.js new file mode 100644 index 0000000..7bb8cd2 --- /dev/null +++ b/extension/html/rpc/hiddify_pb.js @@ -0,0 +1,5393 @@ +// source: hiddify.proto +/** + * @fileoverview + * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = + (typeof globalThis !== 'undefined' && globalThis) || + (typeof window !== 'undefined' && window) || + (typeof global !== 'undefined' && global) || + (typeof self !== 'undefined' && self) || + (function () { return this; }).call(null) || + Function('return this')(); + +var base_pb = require('./base_pb.js'); +goog.object.extend(proto, base_pb); +goog.exportSymbol('proto.hiddifyrpc.ChangeConfigOptionsRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.CoreInfoResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.CoreState', null, global); +goog.exportSymbol('proto.hiddifyrpc.GenerateConfigRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.GenerateConfigResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.GenerateWarpConfigRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.LogLevel', null, global); +goog.exportSymbol('proto.hiddifyrpc.LogMessage', null, global); +goog.exportSymbol('proto.hiddifyrpc.LogType', null, global); +goog.exportSymbol('proto.hiddifyrpc.MessageType', null, global); +goog.exportSymbol('proto.hiddifyrpc.OutboundGroup', null, global); +goog.exportSymbol('proto.hiddifyrpc.OutboundGroupItem', null, global); +goog.exportSymbol('proto.hiddifyrpc.OutboundGroupList', null, global); +goog.exportSymbol('proto.hiddifyrpc.ParseRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.ParseResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.Response', null, global); +goog.exportSymbol('proto.hiddifyrpc.SelectOutboundRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.SetSystemProxyEnabledRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.SetupRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.StartRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.StopRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.SystemInfo', null, global); +goog.exportSymbol('proto.hiddifyrpc.SystemProxyStatus', null, global); +goog.exportSymbol('proto.hiddifyrpc.TunnelResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.TunnelStartRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.UrlTestRequest', null, global); +goog.exportSymbol('proto.hiddifyrpc.WarpAccount', null, global); +goog.exportSymbol('proto.hiddifyrpc.WarpGenerationResponse', null, global); +goog.exportSymbol('proto.hiddifyrpc.WarpWireguardConfig', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.CoreInfoResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.CoreInfoResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.CoreInfoResponse.displayName = 'proto.hiddifyrpc.CoreInfoResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.StartRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.StartRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.StartRequest.displayName = 'proto.hiddifyrpc.StartRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.SetupRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.SetupRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.SetupRequest.displayName = 'proto.hiddifyrpc.SetupRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.Response = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.Response, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.Response.displayName = 'proto.hiddifyrpc.Response'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.SystemInfo = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.SystemInfo, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.SystemInfo.displayName = 'proto.hiddifyrpc.SystemInfo'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.OutboundGroupItem = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.OutboundGroupItem, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.OutboundGroupItem.displayName = 'proto.hiddifyrpc.OutboundGroupItem'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.OutboundGroup = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.hiddifyrpc.OutboundGroup.repeatedFields_, null); +}; +goog.inherits(proto.hiddifyrpc.OutboundGroup, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.OutboundGroup.displayName = 'proto.hiddifyrpc.OutboundGroup'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.OutboundGroupList = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.hiddifyrpc.OutboundGroupList.repeatedFields_, null); +}; +goog.inherits(proto.hiddifyrpc.OutboundGroupList, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.OutboundGroupList.displayName = 'proto.hiddifyrpc.OutboundGroupList'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.WarpAccount = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.WarpAccount, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.WarpAccount.displayName = 'proto.hiddifyrpc.WarpAccount'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.WarpWireguardConfig = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.WarpWireguardConfig, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.WarpWireguardConfig.displayName = 'proto.hiddifyrpc.WarpWireguardConfig'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.WarpGenerationResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.WarpGenerationResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.WarpGenerationResponse.displayName = 'proto.hiddifyrpc.WarpGenerationResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.SystemProxyStatus = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.SystemProxyStatus, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.SystemProxyStatus.displayName = 'proto.hiddifyrpc.SystemProxyStatus'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ParseRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ParseRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ParseRequest.displayName = 'proto.hiddifyrpc.ParseRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ParseResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ParseResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ParseResponse.displayName = 'proto.hiddifyrpc.ParseResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.ChangeConfigOptionsRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.ChangeConfigOptionsRequest.displayName = 'proto.hiddifyrpc.ChangeConfigOptionsRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.GenerateConfigRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.GenerateConfigRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.GenerateConfigRequest.displayName = 'proto.hiddifyrpc.GenerateConfigRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.GenerateConfigResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.GenerateConfigResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.GenerateConfigResponse.displayName = 'proto.hiddifyrpc.GenerateConfigResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.SelectOutboundRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.SelectOutboundRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.SelectOutboundRequest.displayName = 'proto.hiddifyrpc.SelectOutboundRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.UrlTestRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.UrlTestRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.UrlTestRequest.displayName = 'proto.hiddifyrpc.UrlTestRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.GenerateWarpConfigRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.GenerateWarpConfigRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.GenerateWarpConfigRequest.displayName = 'proto.hiddifyrpc.GenerateWarpConfigRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.SetSystemProxyEnabledRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.SetSystemProxyEnabledRequest.displayName = 'proto.hiddifyrpc.SetSystemProxyEnabledRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.LogMessage = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.LogMessage, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.LogMessage.displayName = 'proto.hiddifyrpc.LogMessage'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.StopRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.StopRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.StopRequest.displayName = 'proto.hiddifyrpc.StopRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.TunnelStartRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.TunnelStartRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.TunnelStartRequest.displayName = 'proto.hiddifyrpc.TunnelStartRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.hiddifyrpc.TunnelResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.hiddifyrpc.TunnelResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.hiddifyrpc.TunnelResponse.displayName = 'proto.hiddifyrpc.TunnelResponse'; +} + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.CoreInfoResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.CoreInfoResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.CoreInfoResponse.toObject = function(includeInstance, msg) { + var f, obj = { +coreState: jspb.Message.getFieldWithDefault(msg, 1, 0), +messageType: jspb.Message.getFieldWithDefault(msg, 2, 0), +message: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.CoreInfoResponse} + */ +proto.hiddifyrpc.CoreInfoResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.CoreInfoResponse; + return proto.hiddifyrpc.CoreInfoResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.CoreInfoResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.CoreInfoResponse} + */ +proto.hiddifyrpc.CoreInfoResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.hiddifyrpc.CoreState} */ (reader.readEnum()); + msg.setCoreState(value); + break; + case 2: + var value = /** @type {!proto.hiddifyrpc.MessageType} */ (reader.readEnum()); + msg.setMessageType(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.CoreInfoResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.CoreInfoResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.CoreInfoResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getCoreState(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getMessageType(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional CoreState core_state = 1; + * @return {!proto.hiddifyrpc.CoreState} + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.getCoreState = function() { + return /** @type {!proto.hiddifyrpc.CoreState} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.CoreState} value + * @return {!proto.hiddifyrpc.CoreInfoResponse} returns this + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.setCoreState = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional MessageType message_type = 2; + * @return {!proto.hiddifyrpc.MessageType} + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.getMessageType = function() { + return /** @type {!proto.hiddifyrpc.MessageType} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.MessageType} value + * @return {!proto.hiddifyrpc.CoreInfoResponse} returns this + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.setMessageType = function(value) { + return jspb.Message.setProto3EnumField(this, 2, value); +}; + + +/** + * optional string message = 3; + * @return {string} + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.CoreInfoResponse} returns this + */ +proto.hiddifyrpc.CoreInfoResponse.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.StartRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.StartRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.StartRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.StartRequest.toObject = function(includeInstance, msg) { + var f, obj = { +configPath: jspb.Message.getFieldWithDefault(msg, 1, ""), +configContent: jspb.Message.getFieldWithDefault(msg, 2, ""), +disableMemoryLimit: jspb.Message.getBooleanFieldWithDefault(msg, 3, false), +delayStart: jspb.Message.getBooleanFieldWithDefault(msg, 4, false), +enableOldCommandServer: jspb.Message.getBooleanFieldWithDefault(msg, 5, false), +enableRawConfig: jspb.Message.getBooleanFieldWithDefault(msg, 6, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.StartRequest} + */ +proto.hiddifyrpc.StartRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.StartRequest; + return proto.hiddifyrpc.StartRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.StartRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.StartRequest} + */ +proto.hiddifyrpc.StartRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setConfigPath(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setConfigContent(value); + break; + case 3: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setDisableMemoryLimit(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setDelayStart(value); + break; + case 5: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnableOldCommandServer(value); + break; + case 6: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnableRawConfig(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.StartRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.StartRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.StartRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.StartRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getConfigPath(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getConfigContent(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getDisableMemoryLimit(); + if (f) { + writer.writeBool( + 3, + f + ); + } + f = message.getDelayStart(); + if (f) { + writer.writeBool( + 4, + f + ); + } + f = message.getEnableOldCommandServer(); + if (f) { + writer.writeBool( + 5, + f + ); + } + f = message.getEnableRawConfig(); + if (f) { + writer.writeBool( + 6, + f + ); + } +}; + + +/** + * optional string config_path = 1; + * @return {string} + */ +proto.hiddifyrpc.StartRequest.prototype.getConfigPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.StartRequest} returns this + */ +proto.hiddifyrpc.StartRequest.prototype.setConfigPath = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string config_content = 2; + * @return {string} + */ +proto.hiddifyrpc.StartRequest.prototype.getConfigContent = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.StartRequest} returns this + */ +proto.hiddifyrpc.StartRequest.prototype.setConfigContent = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional bool disable_memory_limit = 3; + * @return {boolean} + */ +proto.hiddifyrpc.StartRequest.prototype.getDisableMemoryLimit = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.StartRequest} returns this + */ +proto.hiddifyrpc.StartRequest.prototype.setDisableMemoryLimit = function(value) { + return jspb.Message.setProto3BooleanField(this, 3, value); +}; + + +/** + * optional bool delay_start = 4; + * @return {boolean} + */ +proto.hiddifyrpc.StartRequest.prototype.getDelayStart = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.StartRequest} returns this + */ +proto.hiddifyrpc.StartRequest.prototype.setDelayStart = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + +/** + * optional bool enable_old_command_server = 5; + * @return {boolean} + */ +proto.hiddifyrpc.StartRequest.prototype.getEnableOldCommandServer = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.StartRequest} returns this + */ +proto.hiddifyrpc.StartRequest.prototype.setEnableOldCommandServer = function(value) { + return jspb.Message.setProto3BooleanField(this, 5, value); +}; + + +/** + * optional bool enable_raw_config = 6; + * @return {boolean} + */ +proto.hiddifyrpc.StartRequest.prototype.getEnableRawConfig = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.StartRequest} returns this + */ +proto.hiddifyrpc.StartRequest.prototype.setEnableRawConfig = function(value) { + return jspb.Message.setProto3BooleanField(this, 6, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.SetupRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.SetupRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.SetupRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SetupRequest.toObject = function(includeInstance, msg) { + var f, obj = { +basePath: jspb.Message.getFieldWithDefault(msg, 1, ""), +workingPath: jspb.Message.getFieldWithDefault(msg, 2, ""), +tempPath: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.SetupRequest} + */ +proto.hiddifyrpc.SetupRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.SetupRequest; + return proto.hiddifyrpc.SetupRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.SetupRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.SetupRequest} + */ +proto.hiddifyrpc.SetupRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setBasePath(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setWorkingPath(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setTempPath(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.SetupRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.SetupRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.SetupRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SetupRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getBasePath(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getWorkingPath(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getTempPath(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional string base_path = 1; + * @return {string} + */ +proto.hiddifyrpc.SetupRequest.prototype.getBasePath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.SetupRequest} returns this + */ +proto.hiddifyrpc.SetupRequest.prototype.setBasePath = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string working_path = 2; + * @return {string} + */ +proto.hiddifyrpc.SetupRequest.prototype.getWorkingPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.SetupRequest} returns this + */ +proto.hiddifyrpc.SetupRequest.prototype.setWorkingPath = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string temp_path = 3; + * @return {string} + */ +proto.hiddifyrpc.SetupRequest.prototype.getTempPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.SetupRequest} returns this + */ +proto.hiddifyrpc.SetupRequest.prototype.setTempPath = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.Response.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.Response.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.Response} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Response.toObject = function(includeInstance, msg) { + var f, obj = { +responseCode: jspb.Message.getFieldWithDefault(msg, 1, 0), +message: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.Response} + */ +proto.hiddifyrpc.Response.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.Response; + return proto.hiddifyrpc.Response.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.Response} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.Response} + */ +proto.hiddifyrpc.Response.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.hiddifyrpc.ResponseCode} */ (reader.readEnum()); + msg.setResponseCode(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.Response.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.Response.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.Response} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.Response.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getResponseCode(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional ResponseCode response_code = 1; + * @return {!proto.hiddifyrpc.ResponseCode} + */ +proto.hiddifyrpc.Response.prototype.getResponseCode = function() { + return /** @type {!proto.hiddifyrpc.ResponseCode} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.ResponseCode} value + * @return {!proto.hiddifyrpc.Response} returns this + */ +proto.hiddifyrpc.Response.prototype.setResponseCode = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional string message = 2; + * @return {string} + */ +proto.hiddifyrpc.Response.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.Response} returns this + */ +proto.hiddifyrpc.Response.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.SystemInfo.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.SystemInfo.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.SystemInfo} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SystemInfo.toObject = function(includeInstance, msg) { + var f, obj = { +memory: jspb.Message.getFieldWithDefault(msg, 1, 0), +goroutines: jspb.Message.getFieldWithDefault(msg, 2, 0), +connectionsIn: jspb.Message.getFieldWithDefault(msg, 3, 0), +connectionsOut: jspb.Message.getFieldWithDefault(msg, 4, 0), +trafficAvailable: jspb.Message.getBooleanFieldWithDefault(msg, 5, false), +uplink: jspb.Message.getFieldWithDefault(msg, 6, 0), +downlink: jspb.Message.getFieldWithDefault(msg, 7, 0), +uplinkTotal: jspb.Message.getFieldWithDefault(msg, 8, 0), +downlinkTotal: jspb.Message.getFieldWithDefault(msg, 9, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.SystemInfo} + */ +proto.hiddifyrpc.SystemInfo.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.SystemInfo; + return proto.hiddifyrpc.SystemInfo.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.SystemInfo} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.SystemInfo} + */ +proto.hiddifyrpc.SystemInfo.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readInt64()); + msg.setMemory(value); + break; + case 2: + var value = /** @type {number} */ (reader.readInt32()); + msg.setGoroutines(value); + break; + case 3: + var value = /** @type {number} */ (reader.readInt32()); + msg.setConnectionsIn(value); + break; + case 4: + var value = /** @type {number} */ (reader.readInt32()); + msg.setConnectionsOut(value); + break; + case 5: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setTrafficAvailable(value); + break; + case 6: + var value = /** @type {number} */ (reader.readInt64()); + msg.setUplink(value); + break; + case 7: + var value = /** @type {number} */ (reader.readInt64()); + msg.setDownlink(value); + break; + case 8: + var value = /** @type {number} */ (reader.readInt64()); + msg.setUplinkTotal(value); + break; + case 9: + var value = /** @type {number} */ (reader.readInt64()); + msg.setDownlinkTotal(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.SystemInfo.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.SystemInfo.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.SystemInfo} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SystemInfo.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMemory(); + if (f !== 0) { + writer.writeInt64( + 1, + f + ); + } + f = message.getGoroutines(); + if (f !== 0) { + writer.writeInt32( + 2, + f + ); + } + f = message.getConnectionsIn(); + if (f !== 0) { + writer.writeInt32( + 3, + f + ); + } + f = message.getConnectionsOut(); + if (f !== 0) { + writer.writeInt32( + 4, + f + ); + } + f = message.getTrafficAvailable(); + if (f) { + writer.writeBool( + 5, + f + ); + } + f = message.getUplink(); + if (f !== 0) { + writer.writeInt64( + 6, + f + ); + } + f = message.getDownlink(); + if (f !== 0) { + writer.writeInt64( + 7, + f + ); + } + f = message.getUplinkTotal(); + if (f !== 0) { + writer.writeInt64( + 8, + f + ); + } + f = message.getDownlinkTotal(); + if (f !== 0) { + writer.writeInt64( + 9, + f + ); + } +}; + + +/** + * optional int64 memory = 1; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getMemory = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setMemory = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional int32 goroutines = 2; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getGoroutines = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setGoroutines = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * optional int32 connections_in = 3; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getConnectionsIn = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setConnectionsIn = function(value) { + return jspb.Message.setProto3IntField(this, 3, value); +}; + + +/** + * optional int32 connections_out = 4; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getConnectionsOut = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setConnectionsOut = function(value) { + return jspb.Message.setProto3IntField(this, 4, value); +}; + + +/** + * optional bool traffic_available = 5; + * @return {boolean} + */ +proto.hiddifyrpc.SystemInfo.prototype.getTrafficAvailable = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setTrafficAvailable = function(value) { + return jspb.Message.setProto3BooleanField(this, 5, value); +}; + + +/** + * optional int64 uplink = 6; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getUplink = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setUplink = function(value) { + return jspb.Message.setProto3IntField(this, 6, value); +}; + + +/** + * optional int64 downlink = 7; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getDownlink = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setDownlink = function(value) { + return jspb.Message.setProto3IntField(this, 7, value); +}; + + +/** + * optional int64 uplink_total = 8; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getUplinkTotal = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setUplinkTotal = function(value) { + return jspb.Message.setProto3IntField(this, 8, value); +}; + + +/** + * optional int64 downlink_total = 9; + * @return {number} + */ +proto.hiddifyrpc.SystemInfo.prototype.getDownlinkTotal = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.SystemInfo} returns this + */ +proto.hiddifyrpc.SystemInfo.prototype.setDownlinkTotal = function(value) { + return jspb.Message.setProto3IntField(this, 9, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.OutboundGroupItem.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.OutboundGroupItem} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.OutboundGroupItem.toObject = function(includeInstance, msg) { + var f, obj = { +tag: jspb.Message.getFieldWithDefault(msg, 1, ""), +type: jspb.Message.getFieldWithDefault(msg, 2, ""), +urlTestTime: jspb.Message.getFieldWithDefault(msg, 3, 0), +urlTestDelay: jspb.Message.getFieldWithDefault(msg, 4, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.OutboundGroupItem} + */ +proto.hiddifyrpc.OutboundGroupItem.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.OutboundGroupItem; + return proto.hiddifyrpc.OutboundGroupItem.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.OutboundGroupItem} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.OutboundGroupItem} + */ +proto.hiddifyrpc.OutboundGroupItem.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setTag(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setType(value); + break; + case 3: + var value = /** @type {number} */ (reader.readInt64()); + msg.setUrlTestTime(value); + break; + case 4: + var value = /** @type {number} */ (reader.readInt32()); + msg.setUrlTestDelay(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.OutboundGroupItem.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.OutboundGroupItem} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.OutboundGroupItem.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTag(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getType(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getUrlTestTime(); + if (f !== 0) { + writer.writeInt64( + 3, + f + ); + } + f = message.getUrlTestDelay(); + if (f !== 0) { + writer.writeInt32( + 4, + f + ); + } +}; + + +/** + * optional string tag = 1; + * @return {string} + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.getTag = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.OutboundGroupItem} returns this + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.setTag = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string type = 2; + * @return {string} + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.getType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.OutboundGroupItem} returns this + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.setType = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional int64 url_test_time = 3; + * @return {number} + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.getUrlTestTime = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.OutboundGroupItem} returns this + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.setUrlTestTime = function(value) { + return jspb.Message.setProto3IntField(this, 3, value); +}; + + +/** + * optional int32 url_test_delay = 4; + * @return {number} + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.getUrlTestDelay = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.OutboundGroupItem} returns this + */ +proto.hiddifyrpc.OutboundGroupItem.prototype.setUrlTestDelay = function(value) { + return jspb.Message.setProto3IntField(this, 4, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.hiddifyrpc.OutboundGroup.repeatedFields_ = [4]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.OutboundGroup.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.OutboundGroup.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.OutboundGroup} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.OutboundGroup.toObject = function(includeInstance, msg) { + var f, obj = { +tag: jspb.Message.getFieldWithDefault(msg, 1, ""), +type: jspb.Message.getFieldWithDefault(msg, 2, ""), +selected: jspb.Message.getFieldWithDefault(msg, 3, ""), +itemsList: jspb.Message.toObjectList(msg.getItemsList(), + proto.hiddifyrpc.OutboundGroupItem.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.OutboundGroup} + */ +proto.hiddifyrpc.OutboundGroup.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.OutboundGroup; + return proto.hiddifyrpc.OutboundGroup.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.OutboundGroup} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.OutboundGroup} + */ +proto.hiddifyrpc.OutboundGroup.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setTag(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setType(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setSelected(value); + break; + case 4: + var value = new proto.hiddifyrpc.OutboundGroupItem; + reader.readMessage(value,proto.hiddifyrpc.OutboundGroupItem.deserializeBinaryFromReader); + msg.addItems(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.OutboundGroup.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.OutboundGroup.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.OutboundGroup} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.OutboundGroup.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getTag(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getType(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getSelected(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getItemsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 4, + f, + proto.hiddifyrpc.OutboundGroupItem.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string tag = 1; + * @return {string} + */ +proto.hiddifyrpc.OutboundGroup.prototype.getTag = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.OutboundGroup} returns this + */ +proto.hiddifyrpc.OutboundGroup.prototype.setTag = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string type = 2; + * @return {string} + */ +proto.hiddifyrpc.OutboundGroup.prototype.getType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.OutboundGroup} returns this + */ +proto.hiddifyrpc.OutboundGroup.prototype.setType = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string selected = 3; + * @return {string} + */ +proto.hiddifyrpc.OutboundGroup.prototype.getSelected = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.OutboundGroup} returns this + */ +proto.hiddifyrpc.OutboundGroup.prototype.setSelected = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * repeated OutboundGroupItem items = 4; + * @return {!Array} + */ +proto.hiddifyrpc.OutboundGroup.prototype.getItemsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.hiddifyrpc.OutboundGroupItem, 4)); +}; + + +/** + * @param {!Array} value + * @return {!proto.hiddifyrpc.OutboundGroup} returns this +*/ +proto.hiddifyrpc.OutboundGroup.prototype.setItemsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 4, value); +}; + + +/** + * @param {!proto.hiddifyrpc.OutboundGroupItem=} opt_value + * @param {number=} opt_index + * @return {!proto.hiddifyrpc.OutboundGroupItem} + */ +proto.hiddifyrpc.OutboundGroup.prototype.addItems = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.hiddifyrpc.OutboundGroupItem, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.hiddifyrpc.OutboundGroup} returns this + */ +proto.hiddifyrpc.OutboundGroup.prototype.clearItemsList = function() { + return this.setItemsList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.hiddifyrpc.OutboundGroupList.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.OutboundGroupList.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.OutboundGroupList.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.OutboundGroupList} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.OutboundGroupList.toObject = function(includeInstance, msg) { + var f, obj = { +itemsList: jspb.Message.toObjectList(msg.getItemsList(), + proto.hiddifyrpc.OutboundGroup.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.OutboundGroupList} + */ +proto.hiddifyrpc.OutboundGroupList.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.OutboundGroupList; + return proto.hiddifyrpc.OutboundGroupList.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.OutboundGroupList} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.OutboundGroupList} + */ +proto.hiddifyrpc.OutboundGroupList.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.hiddifyrpc.OutboundGroup; + reader.readMessage(value,proto.hiddifyrpc.OutboundGroup.deserializeBinaryFromReader); + msg.addItems(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.OutboundGroupList.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.OutboundGroupList.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.OutboundGroupList} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.OutboundGroupList.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getItemsList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + proto.hiddifyrpc.OutboundGroup.serializeBinaryToWriter + ); + } +}; + + +/** + * repeated OutboundGroup items = 1; + * @return {!Array} + */ +proto.hiddifyrpc.OutboundGroupList.prototype.getItemsList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.hiddifyrpc.OutboundGroup, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.hiddifyrpc.OutboundGroupList} returns this +*/ +proto.hiddifyrpc.OutboundGroupList.prototype.setItemsList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.hiddifyrpc.OutboundGroup=} opt_value + * @param {number=} opt_index + * @return {!proto.hiddifyrpc.OutboundGroup} + */ +proto.hiddifyrpc.OutboundGroupList.prototype.addItems = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.hiddifyrpc.OutboundGroup, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.hiddifyrpc.OutboundGroupList} returns this + */ +proto.hiddifyrpc.OutboundGroupList.prototype.clearItemsList = function() { + return this.setItemsList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.WarpAccount.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.WarpAccount.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.WarpAccount} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.WarpAccount.toObject = function(includeInstance, msg) { + var f, obj = { +accountId: jspb.Message.getFieldWithDefault(msg, 1, ""), +accessToken: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.WarpAccount} + */ +proto.hiddifyrpc.WarpAccount.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.WarpAccount; + return proto.hiddifyrpc.WarpAccount.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.WarpAccount} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.WarpAccount} + */ +proto.hiddifyrpc.WarpAccount.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setAccessToken(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.WarpAccount.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.WarpAccount.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.WarpAccount} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.WarpAccount.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getAccessToken(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string account_id = 1; + * @return {string} + */ +proto.hiddifyrpc.WarpAccount.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpAccount} returns this + */ +proto.hiddifyrpc.WarpAccount.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string access_token = 2; + * @return {string} + */ +proto.hiddifyrpc.WarpAccount.prototype.getAccessToken = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpAccount} returns this + */ +proto.hiddifyrpc.WarpAccount.prototype.setAccessToken = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.WarpWireguardConfig.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.WarpWireguardConfig} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.WarpWireguardConfig.toObject = function(includeInstance, msg) { + var f, obj = { +privateKey: jspb.Message.getFieldWithDefault(msg, 1, ""), +localAddressIpv4: jspb.Message.getFieldWithDefault(msg, 2, ""), +localAddressIpv6: jspb.Message.getFieldWithDefault(msg, 3, ""), +peerPublicKey: jspb.Message.getFieldWithDefault(msg, 4, ""), +clientId: jspb.Message.getFieldWithDefault(msg, 5, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.WarpWireguardConfig} + */ +proto.hiddifyrpc.WarpWireguardConfig.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.WarpWireguardConfig; + return proto.hiddifyrpc.WarpWireguardConfig.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.WarpWireguardConfig} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.WarpWireguardConfig} + */ +proto.hiddifyrpc.WarpWireguardConfig.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setPrivateKey(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLocalAddressIpv4(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setLocalAddressIpv6(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setPeerPublicKey(value); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.setClientId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.WarpWireguardConfig.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.WarpWireguardConfig} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.WarpWireguardConfig.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getPrivateKey(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getLocalAddressIpv4(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getLocalAddressIpv6(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getPeerPublicKey(); + if (f.length > 0) { + writer.writeString( + 4, + f + ); + } + f = message.getClientId(); + if (f.length > 0) { + writer.writeString( + 5, + f + ); + } +}; + + +/** + * optional string private_key = 1; + * @return {string} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.getPrivateKey = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpWireguardConfig} returns this + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.setPrivateKey = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string local_address_ipv4 = 2; + * @return {string} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.getLocalAddressIpv4 = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpWireguardConfig} returns this + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.setLocalAddressIpv4 = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string local_address_ipv6 = 3; + * @return {string} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.getLocalAddressIpv6 = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpWireguardConfig} returns this + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.setLocalAddressIpv6 = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional string peer_public_key = 4; + * @return {string} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.getPeerPublicKey = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpWireguardConfig} returns this + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.setPeerPublicKey = function(value) { + return jspb.Message.setProto3StringField(this, 4, value); +}; + + +/** + * optional string client_id = 5; + * @return {string} + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.getClientId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpWireguardConfig} returns this + */ +proto.hiddifyrpc.WarpWireguardConfig.prototype.setClientId = function(value) { + return jspb.Message.setProto3StringField(this, 5, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.WarpGenerationResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.WarpGenerationResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.WarpGenerationResponse.toObject = function(includeInstance, msg) { + var f, obj = { +account: (f = msg.getAccount()) && proto.hiddifyrpc.WarpAccount.toObject(includeInstance, f), +log: jspb.Message.getFieldWithDefault(msg, 2, ""), +config: (f = msg.getConfig()) && proto.hiddifyrpc.WarpWireguardConfig.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.WarpGenerationResponse} + */ +proto.hiddifyrpc.WarpGenerationResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.WarpGenerationResponse; + return proto.hiddifyrpc.WarpGenerationResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.WarpGenerationResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.WarpGenerationResponse} + */ +proto.hiddifyrpc.WarpGenerationResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.hiddifyrpc.WarpAccount; + reader.readMessage(value,proto.hiddifyrpc.WarpAccount.deserializeBinaryFromReader); + msg.setAccount(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setLog(value); + break; + case 3: + var value = new proto.hiddifyrpc.WarpWireguardConfig; + reader.readMessage(value,proto.hiddifyrpc.WarpWireguardConfig.deserializeBinaryFromReader); + msg.setConfig(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.WarpGenerationResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.WarpGenerationResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.WarpGenerationResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getAccount(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.hiddifyrpc.WarpAccount.serializeBinaryToWriter + ); + } + f = message.getLog(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getConfig(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.hiddifyrpc.WarpWireguardConfig.serializeBinaryToWriter + ); + } +}; + + +/** + * optional WarpAccount account = 1; + * @return {?proto.hiddifyrpc.WarpAccount} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.getAccount = function() { + return /** @type{?proto.hiddifyrpc.WarpAccount} */ ( + jspb.Message.getWrapperField(this, proto.hiddifyrpc.WarpAccount, 1)); +}; + + +/** + * @param {?proto.hiddifyrpc.WarpAccount|undefined} value + * @return {!proto.hiddifyrpc.WarpGenerationResponse} returns this +*/ +proto.hiddifyrpc.WarpGenerationResponse.prototype.setAccount = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.hiddifyrpc.WarpGenerationResponse} returns this + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.clearAccount = function() { + return this.setAccount(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.hasAccount = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional string log = 2; + * @return {string} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.getLog = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.WarpGenerationResponse} returns this + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.setLog = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional WarpWireguardConfig config = 3; + * @return {?proto.hiddifyrpc.WarpWireguardConfig} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.getConfig = function() { + return /** @type{?proto.hiddifyrpc.WarpWireguardConfig} */ ( + jspb.Message.getWrapperField(this, proto.hiddifyrpc.WarpWireguardConfig, 3)); +}; + + +/** + * @param {?proto.hiddifyrpc.WarpWireguardConfig|undefined} value + * @return {!proto.hiddifyrpc.WarpGenerationResponse} returns this +*/ +proto.hiddifyrpc.WarpGenerationResponse.prototype.setConfig = function(value) { + return jspb.Message.setWrapperField(this, 3, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.hiddifyrpc.WarpGenerationResponse} returns this + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.clearConfig = function() { + return this.setConfig(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.hiddifyrpc.WarpGenerationResponse.prototype.hasConfig = function() { + return jspb.Message.getField(this, 3) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.SystemProxyStatus.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.SystemProxyStatus.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.SystemProxyStatus} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SystemProxyStatus.toObject = function(includeInstance, msg) { + var f, obj = { +available: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), +enabled: jspb.Message.getBooleanFieldWithDefault(msg, 2, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.SystemProxyStatus} + */ +proto.hiddifyrpc.SystemProxyStatus.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.SystemProxyStatus; + return proto.hiddifyrpc.SystemProxyStatus.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.SystemProxyStatus} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.SystemProxyStatus} + */ +proto.hiddifyrpc.SystemProxyStatus.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setAvailable(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEnabled(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.SystemProxyStatus.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.SystemProxyStatus.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.SystemProxyStatus} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SystemProxyStatus.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getAvailable(); + if (f) { + writer.writeBool( + 1, + f + ); + } + f = message.getEnabled(); + if (f) { + writer.writeBool( + 2, + f + ); + } +}; + + +/** + * optional bool available = 1; + * @return {boolean} + */ +proto.hiddifyrpc.SystemProxyStatus.prototype.getAvailable = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.SystemProxyStatus} returns this + */ +proto.hiddifyrpc.SystemProxyStatus.prototype.setAvailable = function(value) { + return jspb.Message.setProto3BooleanField(this, 1, value); +}; + + +/** + * optional bool enabled = 2; + * @return {boolean} + */ +proto.hiddifyrpc.SystemProxyStatus.prototype.getEnabled = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.SystemProxyStatus} returns this + */ +proto.hiddifyrpc.SystemProxyStatus.prototype.setEnabled = function(value) { + return jspb.Message.setProto3BooleanField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ParseRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ParseRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ParseRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ParseRequest.toObject = function(includeInstance, msg) { + var f, obj = { +content: jspb.Message.getFieldWithDefault(msg, 1, ""), +configPath: jspb.Message.getFieldWithDefault(msg, 2, ""), +tempPath: jspb.Message.getFieldWithDefault(msg, 3, ""), +debug: jspb.Message.getBooleanFieldWithDefault(msg, 4, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ParseRequest} + */ +proto.hiddifyrpc.ParseRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ParseRequest; + return proto.hiddifyrpc.ParseRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ParseRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ParseRequest} + */ +proto.hiddifyrpc.ParseRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setContent(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setConfigPath(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setTempPath(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setDebug(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ParseRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ParseRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ParseRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ParseRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getContent(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getConfigPath(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getTempPath(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } + f = message.getDebug(); + if (f) { + writer.writeBool( + 4, + f + ); + } +}; + + +/** + * optional string content = 1; + * @return {string} + */ +proto.hiddifyrpc.ParseRequest.prototype.getContent = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ParseRequest} returns this + */ +proto.hiddifyrpc.ParseRequest.prototype.setContent = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string config_path = 2; + * @return {string} + */ +proto.hiddifyrpc.ParseRequest.prototype.getConfigPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ParseRequest} returns this + */ +proto.hiddifyrpc.ParseRequest.prototype.setConfigPath = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string temp_path = 3; + * @return {string} + */ +proto.hiddifyrpc.ParseRequest.prototype.getTempPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ParseRequest} returns this + */ +proto.hiddifyrpc.ParseRequest.prototype.setTempPath = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + +/** + * optional bool debug = 4; + * @return {boolean} + */ +proto.hiddifyrpc.ParseRequest.prototype.getDebug = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.ParseRequest} returns this + */ +proto.hiddifyrpc.ParseRequest.prototype.setDebug = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ParseResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ParseResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ParseResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ParseResponse.toObject = function(includeInstance, msg) { + var f, obj = { +responseCode: jspb.Message.getFieldWithDefault(msg, 1, 0), +content: jspb.Message.getFieldWithDefault(msg, 2, ""), +message: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ParseResponse} + */ +proto.hiddifyrpc.ParseResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ParseResponse; + return proto.hiddifyrpc.ParseResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ParseResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ParseResponse} + */ +proto.hiddifyrpc.ParseResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.hiddifyrpc.ResponseCode} */ (reader.readEnum()); + msg.setResponseCode(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setContent(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ParseResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ParseResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ParseResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ParseResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getResponseCode(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getContent(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional ResponseCode response_code = 1; + * @return {!proto.hiddifyrpc.ResponseCode} + */ +proto.hiddifyrpc.ParseResponse.prototype.getResponseCode = function() { + return /** @type {!proto.hiddifyrpc.ResponseCode} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.ResponseCode} value + * @return {!proto.hiddifyrpc.ParseResponse} returns this + */ +proto.hiddifyrpc.ParseResponse.prototype.setResponseCode = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional string content = 2; + * @return {string} + */ +proto.hiddifyrpc.ParseResponse.prototype.getContent = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ParseResponse} returns this + */ +proto.hiddifyrpc.ParseResponse.prototype.setContent = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string message = 3; + * @return {string} + */ +proto.hiddifyrpc.ParseResponse.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ParseResponse} returns this + */ +proto.hiddifyrpc.ParseResponse.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.ChangeConfigOptionsRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.ChangeConfigOptionsRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.toObject = function(includeInstance, msg) { + var f, obj = { +configOptionsJson: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.ChangeConfigOptionsRequest} + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.ChangeConfigOptionsRequest; + return proto.hiddifyrpc.ChangeConfigOptionsRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.ChangeConfigOptionsRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.ChangeConfigOptionsRequest} + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setConfigOptionsJson(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.ChangeConfigOptionsRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.ChangeConfigOptionsRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getConfigOptionsJson(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string config_options_json = 1; + * @return {string} + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.prototype.getConfigOptionsJson = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.ChangeConfigOptionsRequest} returns this + */ +proto.hiddifyrpc.ChangeConfigOptionsRequest.prototype.setConfigOptionsJson = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.GenerateConfigRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.GenerateConfigRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.GenerateConfigRequest.toObject = function(includeInstance, msg) { + var f, obj = { +path: jspb.Message.getFieldWithDefault(msg, 1, ""), +tempPath: jspb.Message.getFieldWithDefault(msg, 2, ""), +debug: jspb.Message.getBooleanFieldWithDefault(msg, 3, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.GenerateConfigRequest} + */ +proto.hiddifyrpc.GenerateConfigRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.GenerateConfigRequest; + return proto.hiddifyrpc.GenerateConfigRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.GenerateConfigRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.GenerateConfigRequest} + */ +proto.hiddifyrpc.GenerateConfigRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setPath(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setTempPath(value); + break; + case 3: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setDebug(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.GenerateConfigRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.GenerateConfigRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.GenerateConfigRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getPath(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getTempPath(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getDebug(); + if (f) { + writer.writeBool( + 3, + f + ); + } +}; + + +/** + * optional string path = 1; + * @return {string} + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.getPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.GenerateConfigRequest} returns this + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.setPath = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string temp_path = 2; + * @return {string} + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.getTempPath = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.GenerateConfigRequest} returns this + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.setTempPath = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional bool debug = 3; + * @return {boolean} + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.getDebug = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.GenerateConfigRequest} returns this + */ +proto.hiddifyrpc.GenerateConfigRequest.prototype.setDebug = function(value) { + return jspb.Message.setProto3BooleanField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.GenerateConfigResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.GenerateConfigResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.GenerateConfigResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.GenerateConfigResponse.toObject = function(includeInstance, msg) { + var f, obj = { +configContent: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.GenerateConfigResponse} + */ +proto.hiddifyrpc.GenerateConfigResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.GenerateConfigResponse; + return proto.hiddifyrpc.GenerateConfigResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.GenerateConfigResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.GenerateConfigResponse} + */ +proto.hiddifyrpc.GenerateConfigResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setConfigContent(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.GenerateConfigResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.GenerateConfigResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.GenerateConfigResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.GenerateConfigResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getConfigContent(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string config_content = 1; + * @return {string} + */ +proto.hiddifyrpc.GenerateConfigResponse.prototype.getConfigContent = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.GenerateConfigResponse} returns this + */ +proto.hiddifyrpc.GenerateConfigResponse.prototype.setConfigContent = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.SelectOutboundRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.SelectOutboundRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.SelectOutboundRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SelectOutboundRequest.toObject = function(includeInstance, msg) { + var f, obj = { +groupTag: jspb.Message.getFieldWithDefault(msg, 1, ""), +outboundTag: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.SelectOutboundRequest} + */ +proto.hiddifyrpc.SelectOutboundRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.SelectOutboundRequest; + return proto.hiddifyrpc.SelectOutboundRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.SelectOutboundRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.SelectOutboundRequest} + */ +proto.hiddifyrpc.SelectOutboundRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setGroupTag(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setOutboundTag(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.SelectOutboundRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.SelectOutboundRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.SelectOutboundRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SelectOutboundRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getGroupTag(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getOutboundTag(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string group_tag = 1; + * @return {string} + */ +proto.hiddifyrpc.SelectOutboundRequest.prototype.getGroupTag = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.SelectOutboundRequest} returns this + */ +proto.hiddifyrpc.SelectOutboundRequest.prototype.setGroupTag = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string outbound_tag = 2; + * @return {string} + */ +proto.hiddifyrpc.SelectOutboundRequest.prototype.getOutboundTag = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.SelectOutboundRequest} returns this + */ +proto.hiddifyrpc.SelectOutboundRequest.prototype.setOutboundTag = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.UrlTestRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.UrlTestRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.UrlTestRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.UrlTestRequest.toObject = function(includeInstance, msg) { + var f, obj = { +groupTag: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.UrlTestRequest} + */ +proto.hiddifyrpc.UrlTestRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.UrlTestRequest; + return proto.hiddifyrpc.UrlTestRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.UrlTestRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.UrlTestRequest} + */ +proto.hiddifyrpc.UrlTestRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setGroupTag(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.UrlTestRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.UrlTestRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.UrlTestRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.UrlTestRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getGroupTag(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string group_tag = 1; + * @return {string} + */ +proto.hiddifyrpc.UrlTestRequest.prototype.getGroupTag = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.UrlTestRequest} returns this + */ +proto.hiddifyrpc.UrlTestRequest.prototype.setGroupTag = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.GenerateWarpConfigRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.GenerateWarpConfigRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.toObject = function(includeInstance, msg) { + var f, obj = { +licenseKey: jspb.Message.getFieldWithDefault(msg, 1, ""), +accountId: jspb.Message.getFieldWithDefault(msg, 2, ""), +accessToken: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.GenerateWarpConfigRequest} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.GenerateWarpConfigRequest; + return proto.hiddifyrpc.GenerateWarpConfigRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.GenerateWarpConfigRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.GenerateWarpConfigRequest} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setLicenseKey(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setAccountId(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setAccessToken(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.GenerateWarpConfigRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.GenerateWarpConfigRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getLicenseKey(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getAccountId(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getAccessToken(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional string license_key = 1; + * @return {string} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.getLicenseKey = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.GenerateWarpConfigRequest} returns this + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.setLicenseKey = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string account_id = 2; + * @return {string} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.getAccountId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.GenerateWarpConfigRequest} returns this + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.setAccountId = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional string access_token = 3; + * @return {string} + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.getAccessToken = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.GenerateWarpConfigRequest} returns this + */ +proto.hiddifyrpc.GenerateWarpConfigRequest.prototype.setAccessToken = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.SetSystemProxyEnabledRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.toObject = function(includeInstance, msg) { + var f, obj = { +isEnabled: jspb.Message.getBooleanFieldWithDefault(msg, 1, false) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.SetSystemProxyEnabledRequest; + return proto.hiddifyrpc.SetSystemProxyEnabledRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setIsEnabled(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.SetSystemProxyEnabledRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getIsEnabled(); + if (f) { + writer.writeBool( + 1, + f + ); + } +}; + + +/** + * optional bool is_enabled = 1; + * @return {boolean} + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.prototype.getIsEnabled = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.SetSystemProxyEnabledRequest} returns this + */ +proto.hiddifyrpc.SetSystemProxyEnabledRequest.prototype.setIsEnabled = function(value) { + return jspb.Message.setProto3BooleanField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.LogMessage.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.LogMessage.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.LogMessage} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.LogMessage.toObject = function(includeInstance, msg) { + var f, obj = { +level: jspb.Message.getFieldWithDefault(msg, 1, 0), +type: jspb.Message.getFieldWithDefault(msg, 2, 0), +message: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.LogMessage} + */ +proto.hiddifyrpc.LogMessage.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.LogMessage; + return proto.hiddifyrpc.LogMessage.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.LogMessage} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.LogMessage} + */ +proto.hiddifyrpc.LogMessage.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.hiddifyrpc.LogLevel} */ (reader.readEnum()); + msg.setLevel(value); + break; + case 2: + var value = /** @type {!proto.hiddifyrpc.LogType} */ (reader.readEnum()); + msg.setType(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.LogMessage.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.LogMessage.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.LogMessage} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.LogMessage.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getLevel(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getType(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional LogLevel level = 1; + * @return {!proto.hiddifyrpc.LogLevel} + */ +proto.hiddifyrpc.LogMessage.prototype.getLevel = function() { + return /** @type {!proto.hiddifyrpc.LogLevel} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.LogLevel} value + * @return {!proto.hiddifyrpc.LogMessage} returns this + */ +proto.hiddifyrpc.LogMessage.prototype.setLevel = function(value) { + return jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional LogType type = 2; + * @return {!proto.hiddifyrpc.LogType} + */ +proto.hiddifyrpc.LogMessage.prototype.getType = function() { + return /** @type {!proto.hiddifyrpc.LogType} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {!proto.hiddifyrpc.LogType} value + * @return {!proto.hiddifyrpc.LogMessage} returns this + */ +proto.hiddifyrpc.LogMessage.prototype.setType = function(value) { + return jspb.Message.setProto3EnumField(this, 2, value); +}; + + +/** + * optional string message = 3; + * @return {string} + */ +proto.hiddifyrpc.LogMessage.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.LogMessage} returns this + */ +proto.hiddifyrpc.LogMessage.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.StopRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.StopRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.StopRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.StopRequest.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.StopRequest} + */ +proto.hiddifyrpc.StopRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.StopRequest; + return proto.hiddifyrpc.StopRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.StopRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.StopRequest} + */ +proto.hiddifyrpc.StopRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.StopRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.StopRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.StopRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.StopRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.TunnelStartRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.TunnelStartRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.TunnelStartRequest.toObject = function(includeInstance, msg) { + var f, obj = { +ipv6: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), +serverPort: jspb.Message.getFieldWithDefault(msg, 2, 0), +strictRoute: jspb.Message.getBooleanFieldWithDefault(msg, 3, false), +endpointIndependentNat: jspb.Message.getBooleanFieldWithDefault(msg, 4, false), +stack: jspb.Message.getFieldWithDefault(msg, 5, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.TunnelStartRequest} + */ +proto.hiddifyrpc.TunnelStartRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.TunnelStartRequest; + return proto.hiddifyrpc.TunnelStartRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.TunnelStartRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.TunnelStartRequest} + */ +proto.hiddifyrpc.TunnelStartRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setIpv6(value); + break; + case 2: + var value = /** @type {number} */ (reader.readInt32()); + msg.setServerPort(value); + break; + case 3: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setStrictRoute(value); + break; + case 4: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setEndpointIndependentNat(value); + break; + case 5: + var value = /** @type {string} */ (reader.readString()); + msg.setStack(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.TunnelStartRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.TunnelStartRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.TunnelStartRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getIpv6(); + if (f) { + writer.writeBool( + 1, + f + ); + } + f = message.getServerPort(); + if (f !== 0) { + writer.writeInt32( + 2, + f + ); + } + f = message.getStrictRoute(); + if (f) { + writer.writeBool( + 3, + f + ); + } + f = message.getEndpointIndependentNat(); + if (f) { + writer.writeBool( + 4, + f + ); + } + f = message.getStack(); + if (f.length > 0) { + writer.writeString( + 5, + f + ); + } +}; + + +/** + * optional bool ipv6 = 1; + * @return {boolean} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.getIpv6 = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.TunnelStartRequest} returns this + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.setIpv6 = function(value) { + return jspb.Message.setProto3BooleanField(this, 1, value); +}; + + +/** + * optional int32 server_port = 2; + * @return {number} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.getServerPort = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.hiddifyrpc.TunnelStartRequest} returns this + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.setServerPort = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * optional bool strict_route = 3; + * @return {boolean} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.getStrictRoute = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.TunnelStartRequest} returns this + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.setStrictRoute = function(value) { + return jspb.Message.setProto3BooleanField(this, 3, value); +}; + + +/** + * optional bool endpoint_independent_nat = 4; + * @return {boolean} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.getEndpointIndependentNat = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.hiddifyrpc.TunnelStartRequest} returns this + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.setEndpointIndependentNat = function(value) { + return jspb.Message.setProto3BooleanField(this, 4, value); +}; + + +/** + * optional string stack = 5; + * @return {string} + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.getStack = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.TunnelStartRequest} returns this + */ +proto.hiddifyrpc.TunnelStartRequest.prototype.setStack = function(value) { + return jspb.Message.setProto3StringField(this, 5, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.hiddifyrpc.TunnelResponse.prototype.toObject = function(opt_includeInstance) { + return proto.hiddifyrpc.TunnelResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.hiddifyrpc.TunnelResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.TunnelResponse.toObject = function(includeInstance, msg) { + var f, obj = { +message: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.hiddifyrpc.TunnelResponse} + */ +proto.hiddifyrpc.TunnelResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.hiddifyrpc.TunnelResponse; + return proto.hiddifyrpc.TunnelResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.hiddifyrpc.TunnelResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.hiddifyrpc.TunnelResponse} + */ +proto.hiddifyrpc.TunnelResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.hiddifyrpc.TunnelResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.hiddifyrpc.TunnelResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.hiddifyrpc.TunnelResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.hiddifyrpc.TunnelResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMessage(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string message = 1; + * @return {string} + */ +proto.hiddifyrpc.TunnelResponse.prototype.getMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.hiddifyrpc.TunnelResponse} returns this + */ +proto.hiddifyrpc.TunnelResponse.prototype.setMessage = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * @enum {number} + */ +proto.hiddifyrpc.CoreState = { + STOPPED: 0, + STARTING: 1, + STARTED: 2, + STOPPING: 3 +}; + +/** + * @enum {number} + */ +proto.hiddifyrpc.MessageType = { + EMPTY: 0, + EMPTY_CONFIGURATION: 1, + START_COMMAND_SERVER: 2, + CREATE_SERVICE: 3, + START_SERVICE: 4, + UNEXPECTED_ERROR: 5, + ALREADY_STARTED: 6, + ALREADY_STOPPED: 7, + INSTANCE_NOT_FOUND: 8, + INSTANCE_NOT_STOPPED: 9, + INSTANCE_NOT_STARTED: 10, + ERROR_BUILDING_CONFIG: 11, + ERROR_PARSING_CONFIG: 12, + ERROR_READING_CONFIG: 13 +}; + +/** + * @enum {number} + */ +proto.hiddifyrpc.LogLevel = { + DEBUG: 0, + INFO: 1, + WARNING: 2, + ERROR: 3, + FATAL: 4 +}; + +/** + * @enum {number} + */ +proto.hiddifyrpc.LogType = { + CORE: 0, + SERVICE: 1, + CONFIG: 2 +}; + +goog.object.extend(exports, proto.hiddifyrpc); diff --git a/extension/ui_elements/abstract.go b/extension/ui_elements/abstract.go new file mode 100644 index 0000000..3e6db3f --- /dev/null +++ b/extension/ui_elements/abstract.go @@ -0,0 +1,42 @@ +package ui_elements + +// // Field is an interface that all specific field types implement. +// type Field interface { +// GetType() string +// } + +// // GenericField holds common field properties. +// const ( +// Select string = "Select" +// Email string = "Email" +// Input string = "Input" +// Password string = "Password" +// TextArea string = "TextArea" +// Switch string = "Switch" +// Checkbox string = "Checkbox" +// RadioButton string = "RadioButton" +// DigitsOnly string = "digitsOnly" +// ) + +// // FormField extends GenericField with additional common properties. +// type FormField struct { +// Key string `json:"key"` +// Type string `json:"type"` +// Label string `json:"label,omitempty"` +// LabelHidden bool `json:"labelHidden"` +// Required bool `json:"required,omitempty"` +// Placeholder string `json:"placeholder,omitempty"` +// Readonly bool `json:"readonly,omitempty"` +// Value string `json:"value"` +// Validator string `json:"validator,omitempty"` +// Items []SelectItem `json:"items,omitempty"` +// Lines int `json:"lines,omitempty"` +// VerticalScroll bool `json:"verticalScroll,omitempty"` +// HorizontalScroll bool `json:"horizontalScroll,omitempty"` +// Monospace bool `json:"monospace,omitempty"` +// } + +// // GetType returns the type of the field. +// func (gf FormField) GetType() string { +// return gf.Type +// } diff --git a/extension/ui_elements/all_test.go b/extension/ui_elements/all_test.go new file mode 100644 index 0000000..a6189b3 --- /dev/null +++ b/extension/ui_elements/all_test.go @@ -0,0 +1,75 @@ +package ui_elements + +// import ( +// "encoding/json" +// "testing" +// ) + +// // Test UnmarshalJSON for different field types +// func TestFormUnmarshalJSON(t *testing.T) { +// formJSON := `{ +// "title": "Form Example", +// "description": "This is a sample form.", +// "fields": [ +// { +// "key": "inputKey", +// "type": "Input", +// "label": "Hi Group", +// "placeholder": "Hi Group flutter", +// "required": true, +// "value": "D" +// }, +// { +// "key": "passwordKey", +// "type": "Password", +// "label": "Password", +// "required": true, +// "value": "secret" +// }, +// { +// "key": "emailKey", +// "type": "Email", +// "label": "Email Label", +// "placeholder": "Enter your email", +// "required": true, +// "value": "example@example.com" +// } +// ] +// }` + +// var form Form +// err := json.Unmarshal([]byte(formJSON), &form) +// if err != nil { +// t.Fatalf("Error unmarshaling form JSON: %v", err) +// } + +// if form.Title != "Form Example" { +// t.Errorf("Expected Title to be 'Form Example', got '%s'", form.Title) +// } +// if form.Description != "This is a sample form." { +// t.Errorf("Expected Description to be 'This is a sample form.', got '%s'", form.Description) +// } + +// if len(form.Fields) != 3 { +// t.Fatalf("Expected 3 fields, got %d", len(form.Fields)) +// } + +// for i, field := range form.Fields { +// switch f := field.(type) { +// case InputField: +// if f.Type != "Input" { +// t.Errorf("Field %d: Expected Type to be 'Input', got '%s'", i+1, f.Type) +// } +// case PasswordField: +// if f.Type != "Password" { +// t.Errorf("Field %d: Expected Type to be 'Password', got '%s'", i+1, f.Type) +// } +// case EmailField: +// if f.Type != "Email" { +// t.Errorf("Field %d: Expected Type to be 'Email', got '%s'", i+1, f.Type) +// } +// default: +// t.Errorf("Field %d: Unexpected field type %T", i+1, f) +// } +// } +// } diff --git a/extension/ui_elements/base.go b/extension/ui_elements/base.go new file mode 100644 index 0000000..13de25b --- /dev/null +++ b/extension/ui_elements/base.go @@ -0,0 +1,84 @@ +package ui_elements + +import ( + "encoding/json" + "fmt" +) + +// Field is an interface that all specific field types implement. +type Field interface { + GetType() string +} + +// GenericField holds common field properties. +const ( + FieldSelect string = "Select" + FieldEmail string = "Email" + FieldInput string = "Input" + FieldPassword string = "Password" + FieldTextArea string = "TextArea" + FieldSwitch string = "Switch" + FieldCheckbox string = "Checkbox" + FieldRadioButton string = "RadioButton" + ValidatorDigitsOnly string = "digitsOnly" + Button_SubmitCancel string = "SubmitCancel" + Button_Cancel string = "Cancel" +) + +// FormField extends GenericField with additional common properties. +type FormField struct { + Key string `json:"key"` + Type string `json:"type"` + Label string `json:"label,omitempty"` + LabelHidden bool `json:"labelHidden"` + Required bool `json:"required,omitempty"` + Placeholder string `json:"placeholder,omitempty"` + Readonly bool `json:"readonly,omitempty"` + Value string `json:"value"` + Validator string `json:"validator,omitempty"` + Items []SelectItem `json:"items,omitempty"` + Lines int `json:"lines,omitempty"` + VerticalScroll bool `json:"verticalScroll,omitempty"` + HorizontalScroll bool `json:"horizontalScroll,omitempty"` + Monospace bool `json:"monospace,omitempty"` +} + +// GetType returns the type of the field. +func (gf FormField) GetType() string { + return gf.Type +} + +type InputField struct { + FormField + Validator string `json:"validator,omitempty"` +} + +type SelectItem struct { + Label string `json:"label"` + Value string `json:"value"` +} + +type Form struct { + Title string `json:"title"` + Description string `json:"description"` + Fields []FormField `json:"fields"` + ButtonMode string `json:"buttonMode"` +} + +func (f *Form) ToJSON() string { + formJson, err := json.MarshalIndent(f, "", " ") + if err != nil { + fmt.Println("Error encoding to JSON:", err) + return "" + } + return (string(formJson)) +} + +// UnmarshalJSON custom unmarshals JSON data into a Form. +func (f *Form) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &f); err != nil { + return err + } + + return nil +} diff --git a/extension/ui_elements/content.go b/extension/ui_elements/content.go new file mode 100644 index 0000000..ed4e807 --- /dev/null +++ b/extension/ui_elements/content.go @@ -0,0 +1,25 @@ +package ui_elements + +// // ContentField represents a label with additional properties. +// type ContentField struct { +// GenericField +// Lines int `json:"lines,omitempty"` +// VerticalScroll bool `json:"verticalScroll,omitempty"` +// HorizontalScroll bool `json:"horizontalScroll,omitempty"` +// Monospace bool `json:"monospace,omitempty"` +// } + +// // NewContentField creates a new ContentField. +// func NewContentField(key, label string, lines int, monospace, horizontalScroll, verticalScroll bool) ContentField { +// return ContentField{ +// GenericField: GenericField{ +// Key: key, +// Type: "Content", +// Label: label, +// }, +// Lines: lines, +// VerticalScroll: verticalScroll, +// HorizontalScroll: horizontalScroll, +// Monospace: monospace, +// } +// } diff --git a/extension/ui_elements/form.go b/extension/ui_elements/form.go new file mode 100644 index 0000000..ca7b5ae --- /dev/null +++ b/extension/ui_elements/form.go @@ -0,0 +1,244 @@ +package ui_elements + +// import ( +// "encoding/json" +// "fmt" +// ) + +// // InputField represents a text input field. +// type InputField struct { +// FormField +// Validator string `json:"validator,omitempty"` + +// } + +// // // NewInputField creates a new InputField. +// // func NewInputField(key, label, placeholder string, required bool, value string) InputField { +// // return InputField{ +// // FormField: FormField{ +// // GenericField: GenericField{ +// // Key: key, +// // Type: "Input", +// // Label: label, +// // }, +// // Placeholder: placeholder, +// // Required: required, +// // Value: value, +// // }, +// // } +// // } + +// // // PasswordField represents a password field. +// // type PasswordField struct { +// // FormField +// // } + +// // // NewPasswordField creates a new PasswordField. +// // func NewPasswordField(key, label string, required bool, value string) PasswordField { +// // return PasswordField{ +// // FormField: FormField{ +// // GenericField: GenericField{ +// // Key: key, +// // Type: "Password", +// // Label: label, +// // }, +// // Required: required, +// // Value: value, +// // }, +// // } +// // } + +// // // EmailField represents an email field. +// // type EmailField struct { +// // FormField +// // } + +// // // NewEmailField creates a new EmailField. +// // func NewEmailField(key, label, placeholder string, required bool, value string) EmailField { +// // return EmailField{ +// // FormField: FormField{ +// // GenericField: GenericField{ +// // Key: key, +// // Type: "Email", +// // Label: label, +// // }, +// // Placeholder: placeholder, +// // Required: required, +// // Value: value, +// // }, +// // } +// // } + +// // // TextAreaField represents a multi-line text area field. +// // type TextAreaField struct { +// // FormField +// // } + +// // // NewTextAreaField creates a new TextAreaField. +// // func NewTextAreaField(key, label, placeholder string, required bool, value string) TextAreaField { +// // return TextAreaField{ +// // FormField: FormField{ +// // GenericField: GenericField{ +// // Key: key, +// // Type: "TextArea", +// // Label: label, +// // }, +// // Placeholder: placeholder, +// // Required: required, +// // Value: value, +// // }, +// // } +// // } + +// // // SelectField represents a dropdown selection field. +// // type SelectField struct { +// // FormField +// // Items []SelectItem `json:"items"` +// // } + +// // // SelectItem represents an item in a dropdown. +// type SelectItem struct { +// Label string `json:"label"` +// Value string `json:"value"` +// } + +// // // NewSelectField creates a new SelectField. +// // func NewSelectField(key, label, value string, items []SelectItem) SelectField { +// // return SelectField{ +// // FormField: FormField{ +// // GenericField: GenericField{ +// // Key: key, +// // Type: "Select", +// // Label: label, +// // }, +// // Value: value, +// // }, +// // Items: items, +// // } +// // } + +// // Form represents a collection of fields with metadata. +// type Form struct { +// Title string `json:"title"` +// Description string `json:"description"` +// Fields []FormField `json:"fields"` +// } + +// func (f *Form) ToJSON() string { +// formJson, err := json.MarshalIndent(f, "", " ") +// if err != nil { +// fmt.Println("Error encoding to JSON:", err) +// return "" +// } +// return (string(formJson)) +// } + +// // UnmarshalJSON custom unmarshals JSON data into a Form. +// func (f *Form) UnmarshalJSON(data []byte) error { +// if err := json.Unmarshal(data, &f); err != nil { +// return err +// } + +// // f.Title = raw.Title +// // f.Description = raw.Description + +// // for _, fieldData := range raw.Fields { +// // var base FormField +// // if err := json.Unmarshal(fieldData, &base); err != nil { +// // return err +// // } + +// // var field Field +// // switch base.Type { +// // case "Input": +// // var inputField InputField +// // if err := json.Unmarshal(fieldData, &inputField); err != nil { +// // return err +// // } +// // field = inputField +// // case "Password": +// // var passwordField PasswordField +// // if err := json.Unmarshal(fieldData, &passwordField); err != nil { +// // return err +// // } +// // field = passwordField +// // case "Email": +// // var emailField EmailField +// // if err := json.Unmarshal(fieldData, &emailField); err != nil { +// // return err +// // } +// // field = emailField +// // case "TextArea": +// // var textAreaField TextAreaField +// // if err := json.Unmarshal(fieldData, &textAreaField); err != nil { +// // return err +// // } +// // field = textAreaField +// // case "Select": +// // var selectField SelectField +// // if err := json.Unmarshal(fieldData, &selectField); err != nil { +// // return err +// // } +// // field = selectField +// // case "Content": +// // var contentField ContentField +// // if err := json.Unmarshal(fieldData, &contentField); err != nil { +// // return err +// // } +// // field = contentField +// // default: +// // return fmt.Errorf("unsupported field type: %s", base.Type) +// // } + +// // f.Fields = append(f.Fields, field) +// // } + +// return nil +// } + +// // func main() { +// // // Example form JSON +// // formJSON := `{ +// // "title": "Form Example", +// // "description": "", +// // "fields": [ +// // { +// // "key": "inputKey", +// // "type": "Input", +// // "label": "Hi Group", +// // "placeholder": "Hi Group flutter", +// // "required": true, +// // "value": "D" +// // }, +// // { +// // "key": "passwordKey", +// // "type": "Password", +// // "label": "Password", +// // "required": true, +// // "value": "secret" +// // }, +// // { +// // "key": "emailKey", +// // "type": "Email", +// // "label": "Email Label", +// // "placeholder": "Enter your email", +// // "required": true, +// // "value": "example@example.com" +// // } +// // ] +// // }` + +// // var form Form + +// // // Decode the form JSON +// // if err := json.Unmarshal([]byte(formJSON), &form); err != nil { +// // fmt.Println("Error decoding form:", err) +// // return +// // } + +// // // Print decoded form fields +// // fmt.Println("Form Title:", form.Title) +// // for i, field := range form.Fields { +// // fmt.Printf("Field %d: %T\n", i+1, field) +// // } +// // } diff --git a/extension_repository/example.go b/extension_repository/example.go new file mode 100644 index 0000000..b68f8e5 --- /dev/null +++ b/extension_repository/example.go @@ -0,0 +1,279 @@ +package extension_repository + +import ( + "context" + "fmt" + "strconv" + "time" + + ex "github.com/hiddify/hiddify-core/extension" + ui "github.com/hiddify/hiddify-core/extension/ui_elements" +) + +// Field name constants +const ( + CountKey = "countKey" + InputKey = "inputKey" + PasswordKey = "passwordKey" + EmailKey = "emailKey" + SelectKey = "selectKey" + TextAreaKey = "textareaKey" + SwitchKey = "switchKey" + CheckboxKey = "checkboxKey" + RadioboxKey = "radioboxKey" + ContentKey = "contentKey" +) + +type ExampleExtension struct { + ex.BaseExtension + cancel context.CancelFunc + input string + password string + email string + selected bool + textarea string + switchVal bool + // checkbox string + radiobox string + content string + + count int +} + +func NewExampleExtension() ex.Extension { + return &ExampleExtension{ + input: "default", + password: "123456", + email: "app@hiddify.com", + selected: false, + textarea: "area", + switchVal: true, + // checkbox: "B", + radiobox: "A", + content: "Welcome to Example Extension", + count: 10, + } +} + +func (e *ExampleExtension) GetId() string { + return "example" +} + +func (e *ExampleExtension) GetTitle() string { + return "Example Extension" +} + +func (e *ExampleExtension) GetDescription() string { + return "This is a sample extension." +} + +func (e *ExampleExtension) GetUI() ui.Form { + // e.setFormData(data) + return e.buildForm() +} + +func (e *ExampleExtension) setFormData(data map[string]string) error { + if val, ok := data[CountKey]; ok { + if intValue, err := strconv.Atoi(val); err == nil { + e.count = intValue + } else { + return err + } + } + if val, ok := data[InputKey]; ok { + e.input = val + } + if val, ok := data[PasswordKey]; ok { + e.password = val + } + if val, ok := data[EmailKey]; ok { + e.email = val + } + if val, ok := data[SelectKey]; ok { + if selectedValue, err := strconv.ParseBool(val); err == nil { + e.selected = selectedValue + } else { + return err + } + } + if val, ok := data[TextAreaKey]; ok { + e.textarea = val + } + if val, ok := data[SwitchKey]; ok { + if selectedValue, err := strconv.ParseBool(val); err == nil { + e.switchVal = selectedValue + } else { + return err + } + } + // if val, ok := data[CheckboxKey]; ok { + // e.checkbox = val + // } + if val, ok := data[ContentKey]; ok { + e.content = val + } + if val, ok := data[RadioboxKey]; ok { + e.radiobox = val + } + return nil +} + +func (e *ExampleExtension) buildForm() ui.Form { + return ui.Form{ + Title: "Example Form", + Description: "This is a sample form.", + ButtonMode: ui.Button_SubmitCancel, + Fields: []ui.FormField{ + { + Type: ui.FieldInput, + Key: CountKey, + Label: "Count", + Placeholder: "This will be the count", + Required: true, + Value: fmt.Sprintf("%d", e.count), + Validator: ui.ValidatorDigitsOnly, + }, + { + Type: ui.FieldInput, + Key: InputKey, + Label: "Hi Group", + Placeholder: "Hi Group flutter", + Required: true, + Value: e.input, + }, + { + Type: ui.FieldPassword, + Key: PasswordKey, + Label: "Password", + Required: true, + Value: e.password, + }, + { + Type: ui.FieldEmail, + Key: EmailKey, + Label: "Email Label", + Placeholder: "Enter your email", + Required: true, + Value: e.email, + }, + { + Type: ui.FieldSwitch, + Key: SelectKey, + Label: "Select Label", + Value: strconv.FormatBool(e.selected), + }, + { + Type: ui.FieldTextArea, + Key: TextAreaKey, + Label: "TextArea Label", + Placeholder: "Enter your text", + Required: true, + Value: e.textarea, + }, + { + Type: ui.FieldSwitch, + Key: SwitchKey, + Label: "Switch Label", + Value: strconv.FormatBool(e.switchVal), + }, + // { + // Type: ui.Checkbox, + // Key: CheckboxKey, + // Label: "Checkbox Label", + // Required: true, + // Value: e.checkbox, + // Items: []ui.SelectItem{ + // { + // Label: "A", + // Value: "A", + // }, + // { + // Label: "B", + // Value: "B", + // }, + // }, + // }, + { + Type: ui.FieldRadioButton, + Key: RadioboxKey, + Label: "Radio Label", + Required: true, + Value: e.radiobox, + Items: []ui.SelectItem{ + { + Label: "A", + Value: "A", + }, + { + Label: "B", + Value: "B", + }, + }, + }, + { + Type: ui.FieldTextArea, + Readonly: true, + Key: ContentKey, + Label: "Content", + Value: e.content, + Lines: 10, + Monospace: true, + HorizontalScroll: true, + VerticalScroll: true, + }, + }, + } +} + +func (e *ExampleExtension) backgroundTask(ctx context.Context) { + i := 1 + for { + select { + case <-ctx.Done(): + e.content = strconv.Itoa(i) + " Background task stop...\n" + e.content + e.UpdateUI(e.buildForm()) + + fmt.Println("Background task stopped") + return + case <-time.After(1000 * time.Millisecond): + txt := strconv.Itoa(i) + " Background task working..." + e.content = txt + "\n" + e.content + e.UpdateUI(e.buildForm()) + fmt.Println(txt) + } + i++ + } +} + +func (e *ExampleExtension) SubmitData(data map[string]string) error { + err := e.setFormData(data) + if err != nil { + return err + } + ctx, cancel := context.WithCancel(context.Background()) + e.cancel = cancel + + go e.backgroundTask(ctx) + + return nil +} + +func (e *ExampleExtension) Cancel() error { + if e.cancel != nil { + e.cancel() + e.cancel = nil + } + return nil +} + +func (e *ExampleExtension) Stop() error { + if e.cancel != nil { + e.cancel() + e.cancel = nil + } + return nil +} + +func init() { + ex.RegisterExtension("com.example.extension", NewExampleExtension()) +} diff --git a/go.mod b/go.mod index 8d1069e..b345896 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.3 require ( github.com/bepass-org/warp-plus v0.0.0-00010101000000-000000000000 - github.com/golang/protobuf v1.5.4 + github.com/improbable-eng/grpc-web v0.15.0 github.com/kardianos/service v1.2.2 github.com/sagernet/gomobile v0.1.3 github.com/sagernet/sing v0.4.2 @@ -20,6 +20,13 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) +require ( + github.com/cenkalti/backoff/v4 v4.1.1 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/rs/cors v1.7.0 // indirect + nhooyr.io/websocket v1.8.6 // indirect +) + require ( berty.tech/go-libtor v1.0.385 // indirect github.com/ajg/form v1.5.1 // indirect @@ -118,7 +125,7 @@ require ( lukechampine.com/blake3 v1.3.0 // indirect ) -replace github.com/sagernet/sing-box => github.com/hiddify/hiddify-sing-box v1.8.9-0.20240902030441-17127b0535df +replace github.com/sagernet/sing-box => github.com/hiddify/hiddify-sing-box v1.8.9-0.20240908122006-6f1809b87260 replace github.com/xtls/xray-core => github.com/hiddify/xray-core v0.0.0-20240902024714-0fcb0895bb4b diff --git a/go.sum b/go.sum index 5121f55..2a9380f 100644 --- a/go.sum +++ b/go.sum @@ -5,41 +5,96 @@ cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0 h1:Wo41lDOevRJSGpevP+8Pk5bANX7fJacO2w04aqLiC5I= github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0/go.mod h1:FVGavL/QEBQDcBpr3fAojoK17xX5k9bicBphrOpP7uM= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/caddyserver/certmagic v0.20.0 h1:bTw7LcEZAh9ucYCRXyCpIrSAGplplI0vGYJ4BpCQ/Fc= github.com/caddyserver/certmagic v0.20.0/go.mod h1:N4sXgpICQUskEWpj7zVzvWD41p3NYacrNoZYiRM2jTg= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY= github.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cretz/bine v0.1.0/go.mod h1:6PF6fWAvYtwjRGkAuDEJeWNOv3a2hUouSP/yRYXmvHw= github.com/cretz/bine v0.2.0 h1:8GiDRGlTgz+o8H9DSnsl+5MeBK4HsExxgl6WgzOCuZo= github.com/cretz/bine v0.2.0/go.mod h1:WU4o9QR9wWp8AVKtTM1XD5vUHkEqnf2vVSo6dBqbetI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-metro v0.0.0-20200812162917-85c65e2d0165/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 h1:y7y0Oa6UawqTFPCDw9JG6pdKt4F9pAhHv0B7FMGaGD0= github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= @@ -48,6 +103,10 @@ github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67d github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344 h1:Arcl6UOIS/kgO2nW3A65HN+7CMjSDP/gofXL4CZt1V4= github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= @@ -56,20 +115,45 @@ github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vz github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4= github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM= github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -77,31 +161,80 @@ github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/ github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20240528025155-186aa0362fba h1:ql1qNgCyOB7iAEk8JTNM+zJrgIbnyCKX/wdlyPufP5g= github.com/google/pprof v0.0.0-20240528025155-186aa0362fba/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hiddify/hiddify-sing-box v1.8.9-0.20240902030441-17127b0535df h1:fTJfKrlInpYi8duVSqW8YdxgsGDzgisxYD6OMLtG+Hs= -github.com/hiddify/hiddify-sing-box v1.8.9-0.20240902030441-17127b0535df/go.mod h1:6+uKh2mjUECXVS//CnV8FIHOCHm0q/a+ViRDbmeEokI= +github.com/hiddify/hiddify-sing-box v1.8.9-0.20240908122006-6f1809b87260 h1:FmoDhBLHNfbRRON1b5ie8GpXksTJxcBJmgpg2ALZ398= +github.com/hiddify/hiddify-sing-box v1.8.9-0.20240908122006-6f1809b87260/go.mod h1:6+uKh2mjUECXVS//CnV8FIHOCHm0q/a+ViRDbmeEokI= github.com/hiddify/ray2sing v0.0.0-20240807031953-a9df25615108 h1:LuDOjwO9GwKAnxhMADCnQcjBTnEBp6JdsoPisf192Q4= github.com/hiddify/ray2sing v0.0.0-20240807031953-a9df25615108/go.mod h1:Qp3mFdKsJZ5TwBYLREgWp8n2O6dgmNt3aAoX+xpvnsM= github.com/hiddify/warp-plus v0.0.0-20240717223357-4f3122e0d11d h1:vRGKh9ou+/vQGfVYa8MczhbIVjHxlP52OWwrDWO77RA= @@ -110,32 +243,57 @@ github.com/hiddify/wireguard-go v0.0.0-20240727191222-383c1da14ff1 h1:xdbHlZtzs+ github.com/hiddify/wireguard-go v0.0.0-20240727191222-383c1da14ff1/go.mod h1:K4J7/npM+VAMUeUmTa2JaA02JmyheP0GpRBOUvn3ecc= github.com/hiddify/xray-core v0.0.0-20240902024714-0fcb0895bb4b h1:fF9wb8XnL4dk/suRK1cOKPN1x1BG3F5iHN3Aq2mrKaE= github.com/hiddify/xray-core v0.0.0-20240902024714-0fcb0895bb4b/go.mod h1:kYMVgEAXeeoD9I08aS15jLRv4RF88vc1uf8xIjlnskU= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/imkira/go-observer/v2 v2.0.0-20230629064422-8e0b61f11f1b h1:1+115FqGoS8p6Iry9AYmrcWDvSveH0F7P2nX1LU00qg= github.com/imkira/go-observer/v2 v2.0.0-20230629064422-8e0b61f11f1b/go.mod h1:XCscqBi1KKh7GcVDDAdkT/Cf6WDjnDAA1XM3nwmA0Ag= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2 h1:9K06NfxkBh25x56yVhWWlKFE8YpicaSfHwoV8SFbueA= github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2/go.mod h1:3A9PQ1cunSDF/1rbTq99Ts4pVnycWg+vlPkfeD2NLFI= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kardianos/service v1.2.2 h1:ZvePhAHfvo0A7Mftk/tEzqEZ7Q4lgnR8sGz4xu1YX60= github.com/kardianos/service v1.2.2/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/libdns/alidns v1.0.3 h1:LFHuGnbseq5+HCeGa1aW8awyX/4M2psB9962fdD2+yQ= github.com/libdns/alidns v1.0.3/go.mod h1:e18uAG6GanfRhcJj6/tps2rCMzQJaYVcGKT+ELjdjGE= github.com/libdns/cloudflare v0.1.1 h1:FVPfWwP8zZCqj268LZjmkDleXlHPlFU9KC4OJ3yn054= @@ -143,33 +301,87 @@ github.com/libdns/cloudflare v0.1.1/go.mod h1:9VK91idpOjg6v7/WbjkEW49bSCxj00ALes github.com/libdns/libdns v0.2.0/go.mod h1:yQCXzk1lEZmmCPa857bnk4TsOiqYasqpyOEeSObbb40= github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s= github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/acmez v1.2.0 h1:1hhLxSgY5FvH5HCnGUuwbKY2VQVo8IU7rxXKSnZ7F30= github.com/mholt/acmez v1.2.0/go.mod h1:VT9YwH1xgNX1kmYY89gY8xPJC84BFAisjo8Egigt4kE= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/ooni/go-libtor v1.1.8 h1:Wo3V3DVTxl5vZdxtQakqYP+DAHx7pPtAFSl1bnAa08w= github.com/ooni/go-libtor v1.1.8/go.mod h1:q1YyLwRD9GeMyeerVvwc0vJ2YgwDLTp2bdVcrh/JXyI= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs= github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= @@ -189,25 +401,57 @@ github.com/pion/turn/v3 v3.0.1 h1:wLi7BTQr6/Q20R0vt/lHbjv6y4GChFtC33nkYbasoT8= github.com/pion/turn/v3 v3.0.1/go.mod h1:MrJDKgqryDyWy1/4NT9TWfXWGMC7UHT6pJIv1+gMeNE= github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs= github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs= github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= github.com/quic-go/quic-go v0.46.0 h1:uuwLClEEyk1DNvchH8uCByQVjo3yKL9opKulExNDs7Y= github.com/quic-go/quic-go v0.46.0/go.mod h1:1dLehS7TIR64+vxGR70GDcatWTOtMX2PUtnKsjbTurI= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/refraction-networking/utls v1.6.7 h1:zVJ7sP1dJx/WtVuITug3qYUq034cDq9B2MR1K67ULZM= github.com/refraction-networking/utls v1.6.7/go.mod h1:BC3O4vQzye5hqpmDTWUqi4P5DDhzJfkV1tdqtawQIH0= github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg= github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3/go.mod h1:HgjTstvQsPGkxUsCd2KWxErBblirPizecHcpD3ffK+s= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a h1:+NkI2670SQpQWvkkD2QgdTuzQG263YZ+2emfpeyGqW0= github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a/go.mod h1:63s7jpZqcDAIpj8oI/1v4Izok+npJOHACFCU6+huCkM= github.com/sagernet/cloudflare-tls v0.0.0-20231208171750-a4483c1b7cd1 h1:YbmpqPQEMdlk9oFSKYWRqVuu9qzNiOayIonKmv1gCXY= @@ -249,6 +493,8 @@ github.com/sagernet/utls v1.5.4 h1:KmsEGbB2dKUtCNC+44NwAdNAqnqQ6GA4pTO0Yik56co= github.com/sagernet/utls v1.5.4/go.mod h1:CTGxPWExIloRipK3XFpYv0OVyhO8kk3XCGW/ieyTh1s= github.com/sagernet/ws v0.0.0-20231204124109-acfe8907c854 h1:6uUiZcDRnZSAegryaUGwPC/Fj13JSHwiTftrXhMmYOc= github.com/sagernet/ws v0.0.0-20231204124109-acfe8907c854/go.mod h1:LtfoSK3+NG57tvnVEHgcuBW9ujgE8enPSgzgwStwCAA= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 h1:emzAzMZ1L9iaKCTxdy3Em8Wv4ChIAGnfiz18Cda70g4= github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -272,19 +518,35 @@ github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -294,14 +556,22 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA= github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e h1:5QefA066A1tF8gHIiADmOVOV5LS43gt3ONnlEl3xkwI= github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e/go.mod h1:5t19P9LBIrNamL6AcMQOncg/r10y3Pc01AbHeMhwlpU= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xmdhs/clash2singbox v0.0.2 h1:/gxaFm8fmv+UcUZzK508Z0yR01wg1LHrrq872Qibk1I= github.com/xmdhs/clash2singbox v0.0.2/go.mod h1:B5pbJCwIHhJg6YRPCT04EXw6XXNIIOllMfL3XyJ7ob8= github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d h1:+B97uD9uHLgAAulhigmys4BVwZZypzK7gPN3WtpgRJg= @@ -313,23 +583,42 @@ github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= @@ -337,11 +626,22 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= @@ -349,14 +649,27 @@ golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= @@ -374,20 +687,43 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -410,6 +746,7 @@ golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -420,22 +757,37 @@ golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -445,33 +797,83 @@ google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/hiddifyrpc/base.pb.go b/hiddifyrpc/base.pb.go new file mode 100644 index 0000000..e9d9595 --- /dev/null +++ b/hiddifyrpc/base.pb.go @@ -0,0 +1,307 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.28.0 +// source: base.proto + +package hiddifyrpc + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ResponseCode int32 + +const ( + ResponseCode_OK ResponseCode = 0 + ResponseCode_FAILED ResponseCode = 1 +) + +// Enum value maps for ResponseCode. +var ( + ResponseCode_name = map[int32]string{ + 0: "OK", + 1: "FAILED", + } + ResponseCode_value = map[string]int32{ + "OK": 0, + "FAILED": 1, + } +) + +func (x ResponseCode) Enum() *ResponseCode { + p := new(ResponseCode) + *p = x + return p +} + +func (x ResponseCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ResponseCode) Descriptor() protoreflect.EnumDescriptor { + return file_base_proto_enumTypes[0].Descriptor() +} + +func (ResponseCode) Type() protoreflect.EnumType { + return &file_base_proto_enumTypes[0] +} + +func (x ResponseCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ResponseCode.Descriptor instead. +func (ResponseCode) EnumDescriptor() ([]byte, []int) { + return file_base_proto_rawDescGZIP(), []int{0} +} + +type HelloRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *HelloRequest) Reset() { + *x = HelloRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_base_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HelloRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HelloRequest) ProtoMessage() {} + +func (x *HelloRequest) ProtoReflect() protoreflect.Message { + mi := &file_base_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead. +func (*HelloRequest) Descriptor() ([]byte, []int) { + return file_base_proto_rawDescGZIP(), []int{0} +} + +func (x *HelloRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type HelloResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *HelloResponse) Reset() { + *x = HelloResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_base_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HelloResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HelloResponse) ProtoMessage() {} + +func (x *HelloResponse) ProtoReflect() protoreflect.Message { + mi := &file_base_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HelloResponse.ProtoReflect.Descriptor instead. +func (*HelloResponse) Descriptor() ([]byte, []int) { + return file_base_proto_rawDescGZIP(), []int{1} +} + +func (x *HelloResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type Empty struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Empty) Reset() { + *x = Empty{} + if protoimpl.UnsafeEnabled { + mi := &file_base_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_base_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_base_proto_rawDescGZIP(), []int{2} +} + +var File_base_proto protoreflect.FileDescriptor + +var file_base_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x22, 0x22, 0x0a, 0x0c, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x29, 0x0a, 0x0d, + 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x2a, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, + 0x45, 0x44, 0x10, 0x01, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2f, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_base_proto_rawDescOnce sync.Once + file_base_proto_rawDescData = file_base_proto_rawDesc +) + +func file_base_proto_rawDescGZIP() []byte { + file_base_proto_rawDescOnce.Do(func() { + file_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_base_proto_rawDescData) + }) + return file_base_proto_rawDescData +} + +var file_base_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_base_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_base_proto_goTypes = []any{ + (ResponseCode)(0), // 0: hiddifyrpc.ResponseCode + (*HelloRequest)(nil), // 1: hiddifyrpc.HelloRequest + (*HelloResponse)(nil), // 2: hiddifyrpc.HelloResponse + (*Empty)(nil), // 3: hiddifyrpc.Empty +} +var file_base_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_base_proto_init() } +func file_base_proto_init() { + if File_base_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_base_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*HelloRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_base_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*HelloResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_base_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Empty); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_base_proto_rawDesc, + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_base_proto_goTypes, + DependencyIndexes: file_base_proto_depIdxs, + EnumInfos: file_base_proto_enumTypes, + MessageInfos: file_base_proto_msgTypes, + }.Build() + File_base_proto = out.File + file_base_proto_rawDesc = nil + file_base_proto_goTypes = nil + file_base_proto_depIdxs = nil +} diff --git a/hiddifyrpc/base.proto b/hiddifyrpc/base.proto new file mode 100644 index 0000000..f532a0b --- /dev/null +++ b/hiddifyrpc/base.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; + +package hiddifyrpc; + +option go_package = "./hiddifyrpc"; + +message HelloRequest { + string name = 1; +} + +message HelloResponse { + string message = 1; +} + +message Empty { +} + +enum ResponseCode { + OK = 0; + FAILED = 1; +} \ No newline at end of file diff --git a/hiddifyrpc/extension.pb.go b/hiddifyrpc/extension.pb.go new file mode 100644 index 0000000..385cdda --- /dev/null +++ b/hiddifyrpc/extension.pb.go @@ -0,0 +1,674 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.28.0 +// source: extension.proto + +package hiddifyrpc + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ExtensionResponseType int32 + +const ( + ExtensionResponseType_NOTHING ExtensionResponseType = 0 + ExtensionResponseType_UPDATE_UI ExtensionResponseType = 1 + ExtensionResponseType_SHOW_DIALOG ExtensionResponseType = 2 + ExtensionResponseType_END ExtensionResponseType = 3 +) + +// Enum value maps for ExtensionResponseType. +var ( + ExtensionResponseType_name = map[int32]string{ + 0: "NOTHING", + 1: "UPDATE_UI", + 2: "SHOW_DIALOG", + 3: "END", + } + ExtensionResponseType_value = map[string]int32{ + "NOTHING": 0, + "UPDATE_UI": 1, + "SHOW_DIALOG": 2, + "END": 3, + } +) + +func (x ExtensionResponseType) Enum() *ExtensionResponseType { + p := new(ExtensionResponseType) + *p = x + return p +} + +func (x ExtensionResponseType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExtensionResponseType) Descriptor() protoreflect.EnumDescriptor { + return file_extension_proto_enumTypes[0].Descriptor() +} + +func (ExtensionResponseType) Type() protoreflect.EnumType { + return &file_extension_proto_enumTypes[0] +} + +func (x ExtensionResponseType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExtensionResponseType.Descriptor instead. +func (ExtensionResponseType) EnumDescriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{0} +} + +type ExtensionActionResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExtensionId string `protobuf:"bytes,1,opt,name=extension_id,json=extensionId,proto3" json:"extension_id,omitempty"` + Code ResponseCode `protobuf:"varint,2,opt,name=code,proto3,enum=hiddifyrpc.ResponseCode" json:"code,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *ExtensionActionResult) Reset() { + *x = ExtensionActionResult{} + if protoimpl.UnsafeEnabled { + mi := &file_extension_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExtensionActionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtensionActionResult) ProtoMessage() {} + +func (x *ExtensionActionResult) ProtoReflect() protoreflect.Message { + mi := &file_extension_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtensionActionResult.ProtoReflect.Descriptor instead. +func (*ExtensionActionResult) Descriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{0} +} + +func (x *ExtensionActionResult) GetExtensionId() string { + if x != nil { + return x.ExtensionId + } + return "" +} + +func (x *ExtensionActionResult) GetCode() ResponseCode { + if x != nil { + return x.Code + } + return ResponseCode_OK +} + +func (x *ExtensionActionResult) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type ExtensionList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extensions []*Extension `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"` +} + +func (x *ExtensionList) Reset() { + *x = ExtensionList{} + if protoimpl.UnsafeEnabled { + mi := &file_extension_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExtensionList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtensionList) ProtoMessage() {} + +func (x *ExtensionList) ProtoReflect() protoreflect.Message { + mi := &file_extension_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtensionList.ProtoReflect.Descriptor instead. +func (*ExtensionList) Descriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{1} +} + +func (x *ExtensionList) GetExtensions() []*Extension { + if x != nil { + return x.Extensions + } + return nil +} + +type EditExtensionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExtensionId string `protobuf:"bytes,1,opt,name=extension_id,json=extensionId,proto3" json:"extension_id,omitempty"` + Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` +} + +func (x *EditExtensionRequest) Reset() { + *x = EditExtensionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_extension_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditExtensionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditExtensionRequest) ProtoMessage() {} + +func (x *EditExtensionRequest) ProtoReflect() protoreflect.Message { + mi := &file_extension_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditExtensionRequest.ProtoReflect.Descriptor instead. +func (*EditExtensionRequest) Descriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{2} +} + +func (x *EditExtensionRequest) GetExtensionId() string { + if x != nil { + return x.ExtensionId + } + return "" +} + +func (x *EditExtensionRequest) GetEnable() bool { + if x != nil { + return x.Enable + } + return false +} + +type Extension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Enable bool `protobuf:"varint,4,opt,name=enable,proto3" json:"enable,omitempty"` +} + +func (x *Extension) Reset() { + *x = Extension{} + if protoimpl.UnsafeEnabled { + mi := &file_extension_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Extension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Extension) ProtoMessage() {} + +func (x *Extension) ProtoReflect() protoreflect.Message { + mi := &file_extension_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Extension.ProtoReflect.Descriptor instead. +func (*Extension) Descriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{3} +} + +func (x *Extension) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Extension) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Extension) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Extension) GetEnable() bool { + if x != nil { + return x.Enable + } + return false +} + +type ExtensionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExtensionId string `protobuf:"bytes,1,opt,name=extension_id,json=extensionId,proto3" json:"extension_id,omitempty"` + Data map[string]string `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ExtensionRequest) Reset() { + *x = ExtensionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_extension_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExtensionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtensionRequest) ProtoMessage() {} + +func (x *ExtensionRequest) ProtoReflect() protoreflect.Message { + mi := &file_extension_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtensionRequest.ProtoReflect.Descriptor instead. +func (*ExtensionRequest) Descriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{4} +} + +func (x *ExtensionRequest) GetExtensionId() string { + if x != nil { + return x.ExtensionId + } + return "" +} + +func (x *ExtensionRequest) GetData() map[string]string { + if x != nil { + return x.Data + } + return nil +} + +type ExtensionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type ExtensionResponseType `protobuf:"varint,1,opt,name=type,proto3,enum=hiddifyrpc.ExtensionResponseType" json:"type,omitempty"` + ExtensionId string `protobuf:"bytes,2,opt,name=extension_id,json=extensionId,proto3" json:"extension_id,omitempty"` + JsonUi string `protobuf:"bytes,3,opt,name=json_ui,json=jsonUi,proto3" json:"json_ui,omitempty"` +} + +func (x *ExtensionResponse) Reset() { + *x = ExtensionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_extension_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExtensionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExtensionResponse) ProtoMessage() {} + +func (x *ExtensionResponse) ProtoReflect() protoreflect.Message { + mi := &file_extension_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExtensionResponse.ProtoReflect.Descriptor instead. +func (*ExtensionResponse) Descriptor() ([]byte, []int) { + return file_extension_proto_rawDescGZIP(), []int{5} +} + +func (x *ExtensionResponse) GetType() ExtensionResponseType { + if x != nil { + return x.Type + } + return ExtensionResponseType_NOTHING +} + +func (x *ExtensionResponse) GetExtensionId() string { + if x != nil { + return x.ExtensionId + } + return "" +} + +func (x *ExtensionResponse) GetJsonUi() string { + if x != nil { + return x.JsonUi + } + return "" +} + +var File_extension_proto protoreflect.FileDescriptor + +var file_extension_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0a, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x1a, 0x0a, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x15, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, + 0x63, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x46, + 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x35, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, + 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x51, 0x0a, 0x14, 0x45, 0x64, 0x69, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x6b, 0x0a, 0x09, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3a, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x68, + 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x75, 0x69, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x73, 0x6f, 0x6e, 0x55, 0x69, 0x2a, 0x4d, 0x0a, 0x15, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x54, 0x48, 0x49, 0x4e, 0x47, + 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x49, 0x10, + 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x44, 0x49, 0x41, 0x4c, 0x4f, 0x47, + 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x32, 0xb1, 0x04, 0x0a, 0x14, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x68, 0x69, 0x64, 0x64, + 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x12, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x56, 0x0a, 0x0d, 0x45, 0x64, 0x69, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, + 0x2e, 0x45, 0x64, 0x69, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, + 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, + 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x06, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, + 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, + 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, + 0x12, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, + 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x55, 0x49, 0x12, 0x1c, 0x2e, 0x68, + 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x69, 0x64, + 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, + 0x0e, 0x5a, 0x0c, 0x2e, 0x2f, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_extension_proto_rawDescOnce sync.Once + file_extension_proto_rawDescData = file_extension_proto_rawDesc +) + +func file_extension_proto_rawDescGZIP() []byte { + file_extension_proto_rawDescOnce.Do(func() { + file_extension_proto_rawDescData = protoimpl.X.CompressGZIP(file_extension_proto_rawDescData) + }) + return file_extension_proto_rawDescData +} + +var file_extension_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_extension_proto_goTypes = []any{ + (ExtensionResponseType)(0), // 0: hiddifyrpc.ExtensionResponseType + (*ExtensionActionResult)(nil), // 1: hiddifyrpc.ExtensionActionResult + (*ExtensionList)(nil), // 2: hiddifyrpc.ExtensionList + (*EditExtensionRequest)(nil), // 3: hiddifyrpc.EditExtensionRequest + (*Extension)(nil), // 4: hiddifyrpc.Extension + (*ExtensionRequest)(nil), // 5: hiddifyrpc.ExtensionRequest + (*ExtensionResponse)(nil), // 6: hiddifyrpc.ExtensionResponse + nil, // 7: hiddifyrpc.ExtensionRequest.DataEntry + (ResponseCode)(0), // 8: hiddifyrpc.ResponseCode + (*Empty)(nil), // 9: hiddifyrpc.Empty +} +var file_extension_proto_depIdxs = []int32{ + 8, // 0: hiddifyrpc.ExtensionActionResult.code:type_name -> hiddifyrpc.ResponseCode + 4, // 1: hiddifyrpc.ExtensionList.extensions:type_name -> hiddifyrpc.Extension + 7, // 2: hiddifyrpc.ExtensionRequest.data:type_name -> hiddifyrpc.ExtensionRequest.DataEntry + 0, // 3: hiddifyrpc.ExtensionResponse.type:type_name -> hiddifyrpc.ExtensionResponseType + 9, // 4: hiddifyrpc.ExtensionHostService.ListExtensions:input_type -> hiddifyrpc.Empty + 5, // 5: hiddifyrpc.ExtensionHostService.Connect:input_type -> hiddifyrpc.ExtensionRequest + 3, // 6: hiddifyrpc.ExtensionHostService.EditExtension:input_type -> hiddifyrpc.EditExtensionRequest + 5, // 7: hiddifyrpc.ExtensionHostService.SubmitForm:input_type -> hiddifyrpc.ExtensionRequest + 5, // 8: hiddifyrpc.ExtensionHostService.Cancel:input_type -> hiddifyrpc.ExtensionRequest + 5, // 9: hiddifyrpc.ExtensionHostService.Stop:input_type -> hiddifyrpc.ExtensionRequest + 5, // 10: hiddifyrpc.ExtensionHostService.GetUI:input_type -> hiddifyrpc.ExtensionRequest + 2, // 11: hiddifyrpc.ExtensionHostService.ListExtensions:output_type -> hiddifyrpc.ExtensionList + 6, // 12: hiddifyrpc.ExtensionHostService.Connect:output_type -> hiddifyrpc.ExtensionResponse + 1, // 13: hiddifyrpc.ExtensionHostService.EditExtension:output_type -> hiddifyrpc.ExtensionActionResult + 1, // 14: hiddifyrpc.ExtensionHostService.SubmitForm:output_type -> hiddifyrpc.ExtensionActionResult + 1, // 15: hiddifyrpc.ExtensionHostService.Cancel:output_type -> hiddifyrpc.ExtensionActionResult + 1, // 16: hiddifyrpc.ExtensionHostService.Stop:output_type -> hiddifyrpc.ExtensionActionResult + 1, // 17: hiddifyrpc.ExtensionHostService.GetUI:output_type -> hiddifyrpc.ExtensionActionResult + 11, // [11:18] is the sub-list for method output_type + 4, // [4:11] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_extension_proto_init() } +func file_extension_proto_init() { + if File_extension_proto != nil { + return + } + file_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_extension_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ExtensionActionResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extension_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*ExtensionList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extension_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*EditExtensionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extension_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Extension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extension_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*ExtensionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_extension_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*ExtensionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_extension_proto_rawDesc, + NumEnums: 1, + NumMessages: 7, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_extension_proto_goTypes, + DependencyIndexes: file_extension_proto_depIdxs, + EnumInfos: file_extension_proto_enumTypes, + MessageInfos: file_extension_proto_msgTypes, + }.Build() + File_extension_proto = out.File + file_extension_proto_rawDesc = nil + file_extension_proto_goTypes = nil + file_extension_proto_depIdxs = nil +} diff --git a/hiddifyrpc/extension.proto b/hiddifyrpc/extension.proto new file mode 100644 index 0000000..ac92df4 --- /dev/null +++ b/hiddifyrpc/extension.proto @@ -0,0 +1,61 @@ +syntax = "proto3"; + +import "base.proto"; + +package hiddifyrpc; + +option go_package = "./hiddifyrpc"; + +service ExtensionHostService { + rpc ListExtensions (Empty) returns (ExtensionList) {} + rpc Connect (ExtensionRequest) returns (stream ExtensionResponse) {} + rpc EditExtension (EditExtensionRequest) returns (ExtensionActionResult) {} + rpc SubmitForm (ExtensionRequest) returns (ExtensionActionResult) {} + rpc Cancel (ExtensionRequest) returns (ExtensionActionResult) {} + rpc Stop (ExtensionRequest) returns (ExtensionActionResult) {} + + rpc GetUI (ExtensionRequest) returns (ExtensionActionResult) {} +} + +message ExtensionActionResult { + string extension_id = 1; + ResponseCode code = 2; + string message = 3; +} + +message ExtensionList { + repeated Extension extensions = 1; +} + +message EditExtensionRequest { + string extension_id = 1; + bool enable = 2; +} + +message Extension { + string id = 1; + string title = 2; + string description = 3; + bool enable = 4; +} + +message ExtensionRequest { + string extension_id = 1; + map data = 2; +} + +message ExtensionResponse { + ExtensionResponseType type = 1; + string extension_id = 2; + string json_ui = 3; +} + + +enum ExtensionResponseType { + NOTHING = 0; + UPDATE_UI = 1; + SHOW_DIALOG = 2; + END=3; +} + + diff --git a/hiddifyrpc/extension_grpc.pb.go b/hiddifyrpc/extension_grpc.pb.go new file mode 100644 index 0000000..68a5036 --- /dev/null +++ b/hiddifyrpc/extension_grpc.pb.go @@ -0,0 +1,353 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.28.0 +// source: extension.proto + +package hiddifyrpc + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + ExtensionHostService_ListExtensions_FullMethodName = "/hiddifyrpc.ExtensionHostService/ListExtensions" + ExtensionHostService_Connect_FullMethodName = "/hiddifyrpc.ExtensionHostService/Connect" + ExtensionHostService_EditExtension_FullMethodName = "/hiddifyrpc.ExtensionHostService/EditExtension" + ExtensionHostService_SubmitForm_FullMethodName = "/hiddifyrpc.ExtensionHostService/SubmitForm" + ExtensionHostService_Cancel_FullMethodName = "/hiddifyrpc.ExtensionHostService/Cancel" + ExtensionHostService_Stop_FullMethodName = "/hiddifyrpc.ExtensionHostService/Stop" + ExtensionHostService_GetUI_FullMethodName = "/hiddifyrpc.ExtensionHostService/GetUI" +) + +// ExtensionHostServiceClient is the client API for ExtensionHostService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ExtensionHostServiceClient interface { + ListExtensions(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ExtensionList, error) + Connect(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ExtensionResponse], error) + EditExtension(ctx context.Context, in *EditExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) + SubmitForm(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) + Cancel(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) + Stop(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) + GetUI(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) +} + +type extensionHostServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewExtensionHostServiceClient(cc grpc.ClientConnInterface) ExtensionHostServiceClient { + return &extensionHostServiceClient{cc} +} + +func (c *extensionHostServiceClient) ListExtensions(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ExtensionList, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExtensionList) + err := c.cc.Invoke(ctx, ExtensionHostService_ListExtensions_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *extensionHostServiceClient) Connect(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ExtensionResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &ExtensionHostService_ServiceDesc.Streams[0], ExtensionHostService_Connect_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[ExtensionRequest, ExtensionResponse]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type ExtensionHostService_ConnectClient = grpc.ServerStreamingClient[ExtensionResponse] + +func (c *extensionHostServiceClient) EditExtension(ctx context.Context, in *EditExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExtensionActionResult) + err := c.cc.Invoke(ctx, ExtensionHostService_EditExtension_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *extensionHostServiceClient) SubmitForm(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExtensionActionResult) + err := c.cc.Invoke(ctx, ExtensionHostService_SubmitForm_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *extensionHostServiceClient) Cancel(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExtensionActionResult) + err := c.cc.Invoke(ctx, ExtensionHostService_Cancel_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *extensionHostServiceClient) Stop(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExtensionActionResult) + err := c.cc.Invoke(ctx, ExtensionHostService_Stop_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *extensionHostServiceClient) GetUI(ctx context.Context, in *ExtensionRequest, opts ...grpc.CallOption) (*ExtensionActionResult, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExtensionActionResult) + err := c.cc.Invoke(ctx, ExtensionHostService_GetUI_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ExtensionHostServiceServer is the server API for ExtensionHostService service. +// All implementations must embed UnimplementedExtensionHostServiceServer +// for forward compatibility. +type ExtensionHostServiceServer interface { + ListExtensions(context.Context, *Empty) (*ExtensionList, error) + Connect(*ExtensionRequest, grpc.ServerStreamingServer[ExtensionResponse]) error + EditExtension(context.Context, *EditExtensionRequest) (*ExtensionActionResult, error) + SubmitForm(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) + Cancel(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) + Stop(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) + GetUI(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) + mustEmbedUnimplementedExtensionHostServiceServer() +} + +// UnimplementedExtensionHostServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedExtensionHostServiceServer struct{} + +func (UnimplementedExtensionHostServiceServer) ListExtensions(context.Context, *Empty) (*ExtensionList, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListExtensions not implemented") +} +func (UnimplementedExtensionHostServiceServer) Connect(*ExtensionRequest, grpc.ServerStreamingServer[ExtensionResponse]) error { + return status.Errorf(codes.Unimplemented, "method Connect not implemented") +} +func (UnimplementedExtensionHostServiceServer) EditExtension(context.Context, *EditExtensionRequest) (*ExtensionActionResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method EditExtension not implemented") +} +func (UnimplementedExtensionHostServiceServer) SubmitForm(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method SubmitForm not implemented") +} +func (UnimplementedExtensionHostServiceServer) Cancel(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method Cancel not implemented") +} +func (UnimplementedExtensionHostServiceServer) Stop(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") +} +func (UnimplementedExtensionHostServiceServer) GetUI(context.Context, *ExtensionRequest) (*ExtensionActionResult, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUI not implemented") +} +func (UnimplementedExtensionHostServiceServer) mustEmbedUnimplementedExtensionHostServiceServer() {} +func (UnimplementedExtensionHostServiceServer) testEmbeddedByValue() {} + +// UnsafeExtensionHostServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ExtensionHostServiceServer will +// result in compilation errors. +type UnsafeExtensionHostServiceServer interface { + mustEmbedUnimplementedExtensionHostServiceServer() +} + +func RegisterExtensionHostServiceServer(s grpc.ServiceRegistrar, srv ExtensionHostServiceServer) { + // If the following call pancis, it indicates UnimplementedExtensionHostServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&ExtensionHostService_ServiceDesc, srv) +} + +func _ExtensionHostService_ListExtensions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtensionHostServiceServer).ListExtensions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ExtensionHostService_ListExtensions_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtensionHostServiceServer).ListExtensions(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExtensionHostService_Connect_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ExtensionRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ExtensionHostServiceServer).Connect(m, &grpc.GenericServerStream[ExtensionRequest, ExtensionResponse]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type ExtensionHostService_ConnectServer = grpc.ServerStreamingServer[ExtensionResponse] + +func _ExtensionHostService_EditExtension_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EditExtensionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtensionHostServiceServer).EditExtension(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ExtensionHostService_EditExtension_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtensionHostServiceServer).EditExtension(ctx, req.(*EditExtensionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExtensionHostService_SubmitForm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExtensionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtensionHostServiceServer).SubmitForm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ExtensionHostService_SubmitForm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtensionHostServiceServer).SubmitForm(ctx, req.(*ExtensionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExtensionHostService_Cancel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExtensionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtensionHostServiceServer).Cancel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ExtensionHostService_Cancel_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtensionHostServiceServer).Cancel(ctx, req.(*ExtensionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExtensionHostService_Stop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExtensionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtensionHostServiceServer).Stop(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ExtensionHostService_Stop_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtensionHostServiceServer).Stop(ctx, req.(*ExtensionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ExtensionHostService_GetUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExtensionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ExtensionHostServiceServer).GetUI(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ExtensionHostService_GetUI_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ExtensionHostServiceServer).GetUI(ctx, req.(*ExtensionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ExtensionHostService_ServiceDesc is the grpc.ServiceDesc for ExtensionHostService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ExtensionHostService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "hiddifyrpc.ExtensionHostService", + HandlerType: (*ExtensionHostServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListExtensions", + Handler: _ExtensionHostService_ListExtensions_Handler, + }, + { + MethodName: "EditExtension", + Handler: _ExtensionHostService_EditExtension_Handler, + }, + { + MethodName: "SubmitForm", + Handler: _ExtensionHostService_SubmitForm_Handler, + }, + { + MethodName: "Cancel", + Handler: _ExtensionHostService_Cancel_Handler, + }, + { + MethodName: "Stop", + Handler: _ExtensionHostService_Stop_Handler, + }, + { + MethodName: "GetUI", + Handler: _ExtensionHostService_GetUI_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Connect", + Handler: _ExtensionHostService_Connect_Handler, + ServerStreams: true, + }, + }, + Metadata: "extension.proto", +} diff --git a/hiddifyrpc/hiddify.pb.go b/hiddifyrpc/hiddify.pb.go index 16aabe2..294515d 100644 --- a/hiddifyrpc/hiddify.pb.go +++ b/hiddifyrpc/hiddify.pb.go @@ -1,50 +1,25 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: hiddifyrpc/hiddify.proto +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.28.0 +// source: hiddify.proto package hiddifyrpc import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type ResponseCode int32 - const ( - ResponseCode_OK ResponseCode = 0 - ResponseCode_FAILED ResponseCode = 1 + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -var ResponseCode_name = map[int32]string{ - 0: "OK", - 1: "FAILED", -} - -var ResponseCode_value = map[string]int32{ - "OK": 0, - "FAILED": 1, -} - -func (x ResponseCode) String() string { - return proto.EnumName(ResponseCode_name, int32(x)) -} - -func (ResponseCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{0} -} - type CoreState int32 const ( @@ -54,26 +29,47 @@ const ( CoreState_STOPPING CoreState = 3 ) -var CoreState_name = map[int32]string{ - 0: "STOPPED", - 1: "STARTING", - 2: "STARTED", - 3: "STOPPING", -} +// Enum value maps for CoreState. +var ( + CoreState_name = map[int32]string{ + 0: "STOPPED", + 1: "STARTING", + 2: "STARTED", + 3: "STOPPING", + } + CoreState_value = map[string]int32{ + "STOPPED": 0, + "STARTING": 1, + "STARTED": 2, + "STOPPING": 3, + } +) -var CoreState_value = map[string]int32{ - "STOPPED": 0, - "STARTING": 1, - "STARTED": 2, - "STOPPING": 3, +func (x CoreState) Enum() *CoreState { + p := new(CoreState) + *p = x + return p } func (x CoreState) String() string { - return proto.EnumName(CoreState_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CoreState) Descriptor() protoreflect.EnumDescriptor { + return file_hiddify_proto_enumTypes[0].Descriptor() +} + +func (CoreState) Type() protoreflect.EnumType { + return &file_hiddify_proto_enumTypes[0] +} + +func (x CoreState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CoreState.Descriptor instead. func (CoreState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{1} + return file_hiddify_proto_rawDescGZIP(), []int{0} } type MessageType int32 @@ -95,46 +91,67 @@ const ( MessageType_ERROR_READING_CONFIG MessageType = 13 ) -var MessageType_name = map[int32]string{ - 0: "EMPTY", - 1: "EMPTY_CONFIGURATION", - 2: "START_COMMAND_SERVER", - 3: "CREATE_SERVICE", - 4: "START_SERVICE", - 5: "UNEXPECTED_ERROR", - 6: "ALREADY_STARTED", - 7: "ALREADY_STOPPED", - 8: "INSTANCE_NOT_FOUND", - 9: "INSTANCE_NOT_STOPPED", - 10: "INSTANCE_NOT_STARTED", - 11: "ERROR_BUILDING_CONFIG", - 12: "ERROR_PARSING_CONFIG", - 13: "ERROR_READING_CONFIG", -} +// Enum value maps for MessageType. +var ( + MessageType_name = map[int32]string{ + 0: "EMPTY", + 1: "EMPTY_CONFIGURATION", + 2: "START_COMMAND_SERVER", + 3: "CREATE_SERVICE", + 4: "START_SERVICE", + 5: "UNEXPECTED_ERROR", + 6: "ALREADY_STARTED", + 7: "ALREADY_STOPPED", + 8: "INSTANCE_NOT_FOUND", + 9: "INSTANCE_NOT_STOPPED", + 10: "INSTANCE_NOT_STARTED", + 11: "ERROR_BUILDING_CONFIG", + 12: "ERROR_PARSING_CONFIG", + 13: "ERROR_READING_CONFIG", + } + MessageType_value = map[string]int32{ + "EMPTY": 0, + "EMPTY_CONFIGURATION": 1, + "START_COMMAND_SERVER": 2, + "CREATE_SERVICE": 3, + "START_SERVICE": 4, + "UNEXPECTED_ERROR": 5, + "ALREADY_STARTED": 6, + "ALREADY_STOPPED": 7, + "INSTANCE_NOT_FOUND": 8, + "INSTANCE_NOT_STOPPED": 9, + "INSTANCE_NOT_STARTED": 10, + "ERROR_BUILDING_CONFIG": 11, + "ERROR_PARSING_CONFIG": 12, + "ERROR_READING_CONFIG": 13, + } +) -var MessageType_value = map[string]int32{ - "EMPTY": 0, - "EMPTY_CONFIGURATION": 1, - "START_COMMAND_SERVER": 2, - "CREATE_SERVICE": 3, - "START_SERVICE": 4, - "UNEXPECTED_ERROR": 5, - "ALREADY_STARTED": 6, - "ALREADY_STOPPED": 7, - "INSTANCE_NOT_FOUND": 8, - "INSTANCE_NOT_STOPPED": 9, - "INSTANCE_NOT_STARTED": 10, - "ERROR_BUILDING_CONFIG": 11, - "ERROR_PARSING_CONFIG": 12, - "ERROR_READING_CONFIG": 13, +func (x MessageType) Enum() *MessageType { + p := new(MessageType) + *p = x + return p } func (x MessageType) String() string { - return proto.EnumName(MessageType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (MessageType) Descriptor() protoreflect.EnumDescriptor { + return file_hiddify_proto_enumTypes[1].Descriptor() +} + +func (MessageType) Type() protoreflect.EnumType { + return &file_hiddify_proto_enumTypes[1] +} + +func (x MessageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MessageType.Descriptor instead. func (MessageType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{2} + return file_hiddify_proto_rawDescGZIP(), []int{1} } type LogLevel int32 @@ -147,28 +164,49 @@ const ( LogLevel_FATAL LogLevel = 4 ) -var LogLevel_name = map[int32]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", - 4: "FATAL", -} +// Enum value maps for LogLevel. +var ( + LogLevel_name = map[int32]string{ + 0: "DEBUG", + 1: "INFO", + 2: "WARNING", + 3: "ERROR", + 4: "FATAL", + } + LogLevel_value = map[string]int32{ + "DEBUG": 0, + "INFO": 1, + "WARNING": 2, + "ERROR": 3, + "FATAL": 4, + } +) -var LogLevel_value = map[string]int32{ - "DEBUG": 0, - "INFO": 1, - "WARNING": 2, - "ERROR": 3, - "FATAL": 4, +func (x LogLevel) Enum() *LogLevel { + p := new(LogLevel) + *p = x + return p } func (x LogLevel) String() string { - return proto.EnumName(LogLevel_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (LogLevel) Descriptor() protoreflect.EnumDescriptor { + return file_hiddify_proto_enumTypes[2].Descriptor() +} + +func (LogLevel) Type() protoreflect.EnumType { + return &file_hiddify_proto_enumTypes[2] +} + +func (x LogLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LogLevel.Descriptor instead. func (LogLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{3} + return file_hiddify_proto_rawDescGZIP(), []int{2} } type LogType int32 @@ -179,1651 +217,2370 @@ const ( LogType_CONFIG LogType = 2 ) -var LogType_name = map[int32]string{ - 0: "CORE", - 1: "SERVICE", - 2: "CONFIG", -} +// Enum value maps for LogType. +var ( + LogType_name = map[int32]string{ + 0: "CORE", + 1: "SERVICE", + 2: "CONFIG", + } + LogType_value = map[string]int32{ + "CORE": 0, + "SERVICE": 1, + "CONFIG": 2, + } +) -var LogType_value = map[string]int32{ - "CORE": 0, - "SERVICE": 1, - "CONFIG": 2, +func (x LogType) Enum() *LogType { + p := new(LogType) + *p = x + return p } func (x LogType) String() string { - return proto.EnumName(LogType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (LogType) Descriptor() protoreflect.EnumDescriptor { + return file_hiddify_proto_enumTypes[3].Descriptor() +} + +func (LogType) Type() protoreflect.EnumType { + return &file_hiddify_proto_enumTypes[3] +} + +func (x LogType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LogType.Descriptor instead. func (LogType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{4} + return file_hiddify_proto_rawDescGZIP(), []int{3} } type CoreInfoResponse struct { - CoreState CoreState `protobuf:"varint,1,opt,name=core_state,json=coreState,proto3,enum=hiddifyrpc.CoreState" json:"core_state,omitempty"` - MessageType MessageType `protobuf:"varint,2,opt,name=message_type,json=messageType,proto3,enum=hiddifyrpc.MessageType" json:"message_type,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CoreState CoreState `protobuf:"varint,1,opt,name=core_state,json=coreState,proto3,enum=hiddifyrpc.CoreState" json:"core_state,omitempty"` + MessageType MessageType `protobuf:"varint,2,opt,name=message_type,json=messageType,proto3,enum=hiddifyrpc.MessageType" json:"message_type,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` } -func (m *CoreInfoResponse) Reset() { *m = CoreInfoResponse{} } -func (m *CoreInfoResponse) String() string { return proto.CompactTextString(m) } -func (*CoreInfoResponse) ProtoMessage() {} +func (x *CoreInfoResponse) Reset() { + *x = CoreInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CoreInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoreInfoResponse) ProtoMessage() {} + +func (x *CoreInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoreInfoResponse.ProtoReflect.Descriptor instead. func (*CoreInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{0} + return file_hiddify_proto_rawDescGZIP(), []int{0} } -func (m *CoreInfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CoreInfoResponse.Unmarshal(m, b) -} -func (m *CoreInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CoreInfoResponse.Marshal(b, m, deterministic) -} -func (m *CoreInfoResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CoreInfoResponse.Merge(m, src) -} -func (m *CoreInfoResponse) XXX_Size() int { - return xxx_messageInfo_CoreInfoResponse.Size(m) -} -func (m *CoreInfoResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CoreInfoResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CoreInfoResponse proto.InternalMessageInfo - -func (m *CoreInfoResponse) GetCoreState() CoreState { - if m != nil { - return m.CoreState +func (x *CoreInfoResponse) GetCoreState() CoreState { + if x != nil { + return x.CoreState } return CoreState_STOPPED } -func (m *CoreInfoResponse) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *CoreInfoResponse) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_EMPTY } -func (m *CoreInfoResponse) GetMessage() string { - if m != nil { - return m.Message +func (x *CoreInfoResponse) GetMessage() string { + if x != nil { + return x.Message } return "" } type StartRequest struct { - ConfigPath string `protobuf:"bytes,1,opt,name=config_path,json=configPath,proto3" json:"config_path,omitempty"` - ConfigContent string `protobuf:"bytes,2,opt,name=config_content,json=configContent,proto3" json:"config_content,omitempty"` - DisableMemoryLimit bool `protobuf:"varint,3,opt,name=disable_memory_limit,json=disableMemoryLimit,proto3" json:"disable_memory_limit,omitempty"` - DelayStart bool `protobuf:"varint,4,opt,name=delay_start,json=delayStart,proto3" json:"delay_start,omitempty"` - EnableOldCommandServer bool `protobuf:"varint,5,opt,name=enable_old_command_server,json=enableOldCommandServer,proto3" json:"enable_old_command_server,omitempty"` - EnableRawConfig bool `protobuf:"varint,6,opt,name=enable_raw_config,json=enableRawConfig,proto3" json:"enable_raw_config,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ConfigPath string `protobuf:"bytes,1,opt,name=config_path,json=configPath,proto3" json:"config_path,omitempty"` + ConfigContent string `protobuf:"bytes,2,opt,name=config_content,json=configContent,proto3" json:"config_content,omitempty"` // Optional if configPath is not provided. + DisableMemoryLimit bool `protobuf:"varint,3,opt,name=disable_memory_limit,json=disableMemoryLimit,proto3" json:"disable_memory_limit,omitempty"` + DelayStart bool `protobuf:"varint,4,opt,name=delay_start,json=delayStart,proto3" json:"delay_start,omitempty"` + EnableOldCommandServer bool `protobuf:"varint,5,opt,name=enable_old_command_server,json=enableOldCommandServer,proto3" json:"enable_old_command_server,omitempty"` + EnableRawConfig bool `protobuf:"varint,6,opt,name=enable_raw_config,json=enableRawConfig,proto3" json:"enable_raw_config,omitempty"` } -func (m *StartRequest) Reset() { *m = StartRequest{} } -func (m *StartRequest) String() string { return proto.CompactTextString(m) } -func (*StartRequest) ProtoMessage() {} +func (x *StartRequest) Reset() { + *x = StartRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartRequest) ProtoMessage() {} + +func (x *StartRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartRequest.ProtoReflect.Descriptor instead. func (*StartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{1} + return file_hiddify_proto_rawDescGZIP(), []int{1} } -func (m *StartRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StartRequest.Unmarshal(m, b) -} -func (m *StartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StartRequest.Marshal(b, m, deterministic) -} -func (m *StartRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_StartRequest.Merge(m, src) -} -func (m *StartRequest) XXX_Size() int { - return xxx_messageInfo_StartRequest.Size(m) -} -func (m *StartRequest) XXX_DiscardUnknown() { - xxx_messageInfo_StartRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_StartRequest proto.InternalMessageInfo - -func (m *StartRequest) GetConfigPath() string { - if m != nil { - return m.ConfigPath +func (x *StartRequest) GetConfigPath() string { + if x != nil { + return x.ConfigPath } return "" } -func (m *StartRequest) GetConfigContent() string { - if m != nil { - return m.ConfigContent +func (x *StartRequest) GetConfigContent() string { + if x != nil { + return x.ConfigContent } return "" } -func (m *StartRequest) GetDisableMemoryLimit() bool { - if m != nil { - return m.DisableMemoryLimit +func (x *StartRequest) GetDisableMemoryLimit() bool { + if x != nil { + return x.DisableMemoryLimit } return false } -func (m *StartRequest) GetDelayStart() bool { - if m != nil { - return m.DelayStart +func (x *StartRequest) GetDelayStart() bool { + if x != nil { + return x.DelayStart } return false } -func (m *StartRequest) GetEnableOldCommandServer() bool { - if m != nil { - return m.EnableOldCommandServer +func (x *StartRequest) GetEnableOldCommandServer() bool { + if x != nil { + return x.EnableOldCommandServer } return false } -func (m *StartRequest) GetEnableRawConfig() bool { - if m != nil { - return m.EnableRawConfig +func (x *StartRequest) GetEnableRawConfig() bool { + if x != nil { + return x.EnableRawConfig } return false } type SetupRequest struct { - BasePath string `protobuf:"bytes,1,opt,name=base_path,json=basePath,proto3" json:"base_path,omitempty"` - WorkingPath string `protobuf:"bytes,2,opt,name=working_path,json=workingPath,proto3" json:"working_path,omitempty"` - TempPath string `protobuf:"bytes,3,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BasePath string `protobuf:"bytes,1,opt,name=base_path,json=basePath,proto3" json:"base_path,omitempty"` + WorkingPath string `protobuf:"bytes,2,opt,name=working_path,json=workingPath,proto3" json:"working_path,omitempty"` + TempPath string `protobuf:"bytes,3,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"` } -func (m *SetupRequest) Reset() { *m = SetupRequest{} } -func (m *SetupRequest) String() string { return proto.CompactTextString(m) } -func (*SetupRequest) ProtoMessage() {} +func (x *SetupRequest) Reset() { + *x = SetupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetupRequest) ProtoMessage() {} + +func (x *SetupRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetupRequest.ProtoReflect.Descriptor instead. func (*SetupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{2} + return file_hiddify_proto_rawDescGZIP(), []int{2} } -func (m *SetupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetupRequest.Unmarshal(m, b) -} -func (m *SetupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetupRequest.Marshal(b, m, deterministic) -} -func (m *SetupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetupRequest.Merge(m, src) -} -func (m *SetupRequest) XXX_Size() int { - return xxx_messageInfo_SetupRequest.Size(m) -} -func (m *SetupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SetupRequest proto.InternalMessageInfo - -func (m *SetupRequest) GetBasePath() string { - if m != nil { - return m.BasePath +func (x *SetupRequest) GetBasePath() string { + if x != nil { + return x.BasePath } return "" } -func (m *SetupRequest) GetWorkingPath() string { - if m != nil { - return m.WorkingPath +func (x *SetupRequest) GetWorkingPath() string { + if x != nil { + return x.WorkingPath } return "" } -func (m *SetupRequest) GetTempPath() string { - if m != nil { - return m.TempPath +func (x *SetupRequest) GetTempPath() string { + if x != nil { + return x.TempPath } return "" } type Response struct { - ResponseCode ResponseCode `protobuf:"varint,1,opt,name=response_code,json=responseCode,proto3,enum=hiddifyrpc.ResponseCode" json:"response_code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResponseCode ResponseCode `protobuf:"varint,1,opt,name=response_code,json=responseCode,proto3,enum=hiddifyrpc.ResponseCode" json:"response_code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` } -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} +func (x *Response) Reset() { + *x = Response{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Response) ProtoMessage() {} + +func (x *Response) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Response.ProtoReflect.Descriptor instead. func (*Response) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{3} + return file_hiddify_proto_rawDescGZIP(), []int{3} } -func (m *Response) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Response.Unmarshal(m, b) -} -func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Response.Marshal(b, m, deterministic) -} -func (m *Response) XXX_Merge(src proto.Message) { - xxx_messageInfo_Response.Merge(m, src) -} -func (m *Response) XXX_Size() int { - return xxx_messageInfo_Response.Size(m) -} -func (m *Response) XXX_DiscardUnknown() { - xxx_messageInfo_Response.DiscardUnknown(m) -} - -var xxx_messageInfo_Response proto.InternalMessageInfo - -func (m *Response) GetResponseCode() ResponseCode { - if m != nil { - return m.ResponseCode +func (x *Response) GetResponseCode() ResponseCode { + if x != nil { + return x.ResponseCode } return ResponseCode_OK } -func (m *Response) GetMessage() string { - if m != nil { - return m.Message +func (x *Response) GetMessage() string { + if x != nil { + return x.Message } return "" } -type HelloRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *HelloRequest) Reset() { *m = HelloRequest{} } -func (m *HelloRequest) String() string { return proto.CompactTextString(m) } -func (*HelloRequest) ProtoMessage() {} -func (*HelloRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{4} -} - -func (m *HelloRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HelloRequest.Unmarshal(m, b) -} -func (m *HelloRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HelloRequest.Marshal(b, m, deterministic) -} -func (m *HelloRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_HelloRequest.Merge(m, src) -} -func (m *HelloRequest) XXX_Size() int { - return xxx_messageInfo_HelloRequest.Size(m) -} -func (m *HelloRequest) XXX_DiscardUnknown() { - xxx_messageInfo_HelloRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_HelloRequest proto.InternalMessageInfo - -func (m *HelloRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type HelloResponse struct { - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *HelloResponse) Reset() { *m = HelloResponse{} } -func (m *HelloResponse) String() string { return proto.CompactTextString(m) } -func (*HelloResponse) ProtoMessage() {} -func (*HelloResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{5} -} - -func (m *HelloResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HelloResponse.Unmarshal(m, b) -} -func (m *HelloResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HelloResponse.Marshal(b, m, deterministic) -} -func (m *HelloResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_HelloResponse.Merge(m, src) -} -func (m *HelloResponse) XXX_Size() int { - return xxx_messageInfo_HelloResponse.Size(m) -} -func (m *HelloResponse) XXX_DiscardUnknown() { - xxx_messageInfo_HelloResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_HelloResponse proto.InternalMessageInfo - -func (m *HelloResponse) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -type Empty struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{6} -} - -func (m *Empty) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Empty.Unmarshal(m, b) -} -func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Empty.Marshal(b, m, deterministic) -} -func (m *Empty) XXX_Merge(src proto.Message) { - xxx_messageInfo_Empty.Merge(m, src) -} -func (m *Empty) XXX_Size() int { - return xxx_messageInfo_Empty.Size(m) -} -func (m *Empty) XXX_DiscardUnknown() { - xxx_messageInfo_Empty.DiscardUnknown(m) -} - -var xxx_messageInfo_Empty proto.InternalMessageInfo - type SystemInfo struct { - Memory int64 `protobuf:"varint,1,opt,name=memory,proto3" json:"memory,omitempty"` - Goroutines int32 `protobuf:"varint,2,opt,name=goroutines,proto3" json:"goroutines,omitempty"` - ConnectionsIn int32 `protobuf:"varint,3,opt,name=connections_in,json=connectionsIn,proto3" json:"connections_in,omitempty"` - ConnectionsOut int32 `protobuf:"varint,4,opt,name=connections_out,json=connectionsOut,proto3" json:"connections_out,omitempty"` - TrafficAvailable bool `protobuf:"varint,5,opt,name=traffic_available,json=trafficAvailable,proto3" json:"traffic_available,omitempty"` - Uplink int64 `protobuf:"varint,6,opt,name=uplink,proto3" json:"uplink,omitempty"` - Downlink int64 `protobuf:"varint,7,opt,name=downlink,proto3" json:"downlink,omitempty"` - UplinkTotal int64 `protobuf:"varint,8,opt,name=uplink_total,json=uplinkTotal,proto3" json:"uplink_total,omitempty"` - DownlinkTotal int64 `protobuf:"varint,9,opt,name=downlink_total,json=downlinkTotal,proto3" json:"downlink_total,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Memory int64 `protobuf:"varint,1,opt,name=memory,proto3" json:"memory,omitempty"` + Goroutines int32 `protobuf:"varint,2,opt,name=goroutines,proto3" json:"goroutines,omitempty"` + ConnectionsIn int32 `protobuf:"varint,3,opt,name=connections_in,json=connectionsIn,proto3" json:"connections_in,omitempty"` + ConnectionsOut int32 `protobuf:"varint,4,opt,name=connections_out,json=connectionsOut,proto3" json:"connections_out,omitempty"` + TrafficAvailable bool `protobuf:"varint,5,opt,name=traffic_available,json=trafficAvailable,proto3" json:"traffic_available,omitempty"` + Uplink int64 `protobuf:"varint,6,opt,name=uplink,proto3" json:"uplink,omitempty"` + Downlink int64 `protobuf:"varint,7,opt,name=downlink,proto3" json:"downlink,omitempty"` + UplinkTotal int64 `protobuf:"varint,8,opt,name=uplink_total,json=uplinkTotal,proto3" json:"uplink_total,omitempty"` + DownlinkTotal int64 `protobuf:"varint,9,opt,name=downlink_total,json=downlinkTotal,proto3" json:"downlink_total,omitempty"` } -func (m *SystemInfo) Reset() { *m = SystemInfo{} } -func (m *SystemInfo) String() string { return proto.CompactTextString(m) } -func (*SystemInfo) ProtoMessage() {} +func (x *SystemInfo) Reset() { + *x = SystemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemInfo) ProtoMessage() {} + +func (x *SystemInfo) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SystemInfo.ProtoReflect.Descriptor instead. func (*SystemInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{7} + return file_hiddify_proto_rawDescGZIP(), []int{4} } -func (m *SystemInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SystemInfo.Unmarshal(m, b) -} -func (m *SystemInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SystemInfo.Marshal(b, m, deterministic) -} -func (m *SystemInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SystemInfo.Merge(m, src) -} -func (m *SystemInfo) XXX_Size() int { - return xxx_messageInfo_SystemInfo.Size(m) -} -func (m *SystemInfo) XXX_DiscardUnknown() { - xxx_messageInfo_SystemInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_SystemInfo proto.InternalMessageInfo - -func (m *SystemInfo) GetMemory() int64 { - if m != nil { - return m.Memory +func (x *SystemInfo) GetMemory() int64 { + if x != nil { + return x.Memory } return 0 } -func (m *SystemInfo) GetGoroutines() int32 { - if m != nil { - return m.Goroutines +func (x *SystemInfo) GetGoroutines() int32 { + if x != nil { + return x.Goroutines } return 0 } -func (m *SystemInfo) GetConnectionsIn() int32 { - if m != nil { - return m.ConnectionsIn +func (x *SystemInfo) GetConnectionsIn() int32 { + if x != nil { + return x.ConnectionsIn } return 0 } -func (m *SystemInfo) GetConnectionsOut() int32 { - if m != nil { - return m.ConnectionsOut +func (x *SystemInfo) GetConnectionsOut() int32 { + if x != nil { + return x.ConnectionsOut } return 0 } -func (m *SystemInfo) GetTrafficAvailable() bool { - if m != nil { - return m.TrafficAvailable +func (x *SystemInfo) GetTrafficAvailable() bool { + if x != nil { + return x.TrafficAvailable } return false } -func (m *SystemInfo) GetUplink() int64 { - if m != nil { - return m.Uplink +func (x *SystemInfo) GetUplink() int64 { + if x != nil { + return x.Uplink } return 0 } -func (m *SystemInfo) GetDownlink() int64 { - if m != nil { - return m.Downlink +func (x *SystemInfo) GetDownlink() int64 { + if x != nil { + return x.Downlink } return 0 } -func (m *SystemInfo) GetUplinkTotal() int64 { - if m != nil { - return m.UplinkTotal +func (x *SystemInfo) GetUplinkTotal() int64 { + if x != nil { + return x.UplinkTotal } return 0 } -func (m *SystemInfo) GetDownlinkTotal() int64 { - if m != nil { - return m.DownlinkTotal +func (x *SystemInfo) GetDownlinkTotal() int64 { + if x != nil { + return x.DownlinkTotal } return 0 } type OutboundGroupItem struct { - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - UrlTestTime int64 `protobuf:"varint,3,opt,name=url_test_time,json=urlTestTime,proto3" json:"url_test_time,omitempty"` - UrlTestDelay int32 `protobuf:"varint,4,opt,name=url_test_delay,json=urlTestDelay,proto3" json:"url_test_delay,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + UrlTestTime int64 `protobuf:"varint,3,opt,name=url_test_time,json=urlTestTime,proto3" json:"url_test_time,omitempty"` + UrlTestDelay int32 `protobuf:"varint,4,opt,name=url_test_delay,json=urlTestDelay,proto3" json:"url_test_delay,omitempty"` } -func (m *OutboundGroupItem) Reset() { *m = OutboundGroupItem{} } -func (m *OutboundGroupItem) String() string { return proto.CompactTextString(m) } -func (*OutboundGroupItem) ProtoMessage() {} +func (x *OutboundGroupItem) Reset() { + *x = OutboundGroupItem{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutboundGroupItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutboundGroupItem) ProtoMessage() {} + +func (x *OutboundGroupItem) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutboundGroupItem.ProtoReflect.Descriptor instead. func (*OutboundGroupItem) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{8} + return file_hiddify_proto_rawDescGZIP(), []int{5} } -func (m *OutboundGroupItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OutboundGroupItem.Unmarshal(m, b) -} -func (m *OutboundGroupItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OutboundGroupItem.Marshal(b, m, deterministic) -} -func (m *OutboundGroupItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_OutboundGroupItem.Merge(m, src) -} -func (m *OutboundGroupItem) XXX_Size() int { - return xxx_messageInfo_OutboundGroupItem.Size(m) -} -func (m *OutboundGroupItem) XXX_DiscardUnknown() { - xxx_messageInfo_OutboundGroupItem.DiscardUnknown(m) -} - -var xxx_messageInfo_OutboundGroupItem proto.InternalMessageInfo - -func (m *OutboundGroupItem) GetTag() string { - if m != nil { - return m.Tag +func (x *OutboundGroupItem) GetTag() string { + if x != nil { + return x.Tag } return "" } -func (m *OutboundGroupItem) GetType() string { - if m != nil { - return m.Type +func (x *OutboundGroupItem) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *OutboundGroupItem) GetUrlTestTime() int64 { - if m != nil { - return m.UrlTestTime +func (x *OutboundGroupItem) GetUrlTestTime() int64 { + if x != nil { + return x.UrlTestTime } return 0 } -func (m *OutboundGroupItem) GetUrlTestDelay() int32 { - if m != nil { - return m.UrlTestDelay +func (x *OutboundGroupItem) GetUrlTestDelay() int32 { + if x != nil { + return x.UrlTestDelay } return 0 } type OutboundGroup struct { - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Selected string `protobuf:"bytes,3,opt,name=selected,proto3" json:"selected,omitempty"` - Items []*OutboundGroupItem `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Selected string `protobuf:"bytes,3,opt,name=selected,proto3" json:"selected,omitempty"` + Items []*OutboundGroupItem `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"` } -func (m *OutboundGroup) Reset() { *m = OutboundGroup{} } -func (m *OutboundGroup) String() string { return proto.CompactTextString(m) } -func (*OutboundGroup) ProtoMessage() {} +func (x *OutboundGroup) Reset() { + *x = OutboundGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutboundGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutboundGroup) ProtoMessage() {} + +func (x *OutboundGroup) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutboundGroup.ProtoReflect.Descriptor instead. func (*OutboundGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{9} + return file_hiddify_proto_rawDescGZIP(), []int{6} } -func (m *OutboundGroup) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OutboundGroup.Unmarshal(m, b) -} -func (m *OutboundGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OutboundGroup.Marshal(b, m, deterministic) -} -func (m *OutboundGroup) XXX_Merge(src proto.Message) { - xxx_messageInfo_OutboundGroup.Merge(m, src) -} -func (m *OutboundGroup) XXX_Size() int { - return xxx_messageInfo_OutboundGroup.Size(m) -} -func (m *OutboundGroup) XXX_DiscardUnknown() { - xxx_messageInfo_OutboundGroup.DiscardUnknown(m) -} - -var xxx_messageInfo_OutboundGroup proto.InternalMessageInfo - -func (m *OutboundGroup) GetTag() string { - if m != nil { - return m.Tag +func (x *OutboundGroup) GetTag() string { + if x != nil { + return x.Tag } return "" } -func (m *OutboundGroup) GetType() string { - if m != nil { - return m.Type +func (x *OutboundGroup) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *OutboundGroup) GetSelected() string { - if m != nil { - return m.Selected +func (x *OutboundGroup) GetSelected() string { + if x != nil { + return x.Selected } return "" } -func (m *OutboundGroup) GetItems() []*OutboundGroupItem { - if m != nil { - return m.Items +func (x *OutboundGroup) GetItems() []*OutboundGroupItem { + if x != nil { + return x.Items } return nil } type OutboundGroupList struct { - Items []*OutboundGroup `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*OutboundGroup `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` } -func (m *OutboundGroupList) Reset() { *m = OutboundGroupList{} } -func (m *OutboundGroupList) String() string { return proto.CompactTextString(m) } -func (*OutboundGroupList) ProtoMessage() {} +func (x *OutboundGroupList) Reset() { + *x = OutboundGroupList{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutboundGroupList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutboundGroupList) ProtoMessage() {} + +func (x *OutboundGroupList) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutboundGroupList.ProtoReflect.Descriptor instead. func (*OutboundGroupList) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{10} + return file_hiddify_proto_rawDescGZIP(), []int{7} } -func (m *OutboundGroupList) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OutboundGroupList.Unmarshal(m, b) -} -func (m *OutboundGroupList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OutboundGroupList.Marshal(b, m, deterministic) -} -func (m *OutboundGroupList) XXX_Merge(src proto.Message) { - xxx_messageInfo_OutboundGroupList.Merge(m, src) -} -func (m *OutboundGroupList) XXX_Size() int { - return xxx_messageInfo_OutboundGroupList.Size(m) -} -func (m *OutboundGroupList) XXX_DiscardUnknown() { - xxx_messageInfo_OutboundGroupList.DiscardUnknown(m) -} - -var xxx_messageInfo_OutboundGroupList proto.InternalMessageInfo - -func (m *OutboundGroupList) GetItems() []*OutboundGroup { - if m != nil { - return m.Items +func (x *OutboundGroupList) GetItems() []*OutboundGroup { + if x != nil { + return x.Items } return nil } type WarpAccount struct { - AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - AccessToken string `protobuf:"bytes,2,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccessToken string `protobuf:"bytes,2,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` } -func (m *WarpAccount) Reset() { *m = WarpAccount{} } -func (m *WarpAccount) String() string { return proto.CompactTextString(m) } -func (*WarpAccount) ProtoMessage() {} +func (x *WarpAccount) Reset() { + *x = WarpAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WarpAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WarpAccount) ProtoMessage() {} + +func (x *WarpAccount) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WarpAccount.ProtoReflect.Descriptor instead. func (*WarpAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{11} + return file_hiddify_proto_rawDescGZIP(), []int{8} } -func (m *WarpAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WarpAccount.Unmarshal(m, b) -} -func (m *WarpAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WarpAccount.Marshal(b, m, deterministic) -} -func (m *WarpAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_WarpAccount.Merge(m, src) -} -func (m *WarpAccount) XXX_Size() int { - return xxx_messageInfo_WarpAccount.Size(m) -} -func (m *WarpAccount) XXX_DiscardUnknown() { - xxx_messageInfo_WarpAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_WarpAccount proto.InternalMessageInfo - -func (m *WarpAccount) GetAccountId() string { - if m != nil { - return m.AccountId +func (x *WarpAccount) GetAccountId() string { + if x != nil { + return x.AccountId } return "" } -func (m *WarpAccount) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *WarpAccount) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } type WarpWireguardConfig struct { - PrivateKey string `protobuf:"bytes,1,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - LocalAddressIpv4 string `protobuf:"bytes,2,opt,name=local_address_ipv4,json=localAddressIpv4,proto3" json:"local_address_ipv4,omitempty"` - LocalAddressIpv6 string `protobuf:"bytes,3,opt,name=local_address_ipv6,json=localAddressIpv6,proto3" json:"local_address_ipv6,omitempty"` - PeerPublicKey string `protobuf:"bytes,4,opt,name=peer_public_key,json=peerPublicKey,proto3" json:"peer_public_key,omitempty"` - ClientId string `protobuf:"bytes,5,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PrivateKey string `protobuf:"bytes,1,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + LocalAddressIpv4 string `protobuf:"bytes,2,opt,name=local_address_ipv4,json=localAddressIpv4,proto3" json:"local_address_ipv4,omitempty"` + LocalAddressIpv6 string `protobuf:"bytes,3,opt,name=local_address_ipv6,json=localAddressIpv6,proto3" json:"local_address_ipv6,omitempty"` + PeerPublicKey string `protobuf:"bytes,4,opt,name=peer_public_key,json=peerPublicKey,proto3" json:"peer_public_key,omitempty"` + ClientId string `protobuf:"bytes,5,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` } -func (m *WarpWireguardConfig) Reset() { *m = WarpWireguardConfig{} } -func (m *WarpWireguardConfig) String() string { return proto.CompactTextString(m) } -func (*WarpWireguardConfig) ProtoMessage() {} +func (x *WarpWireguardConfig) Reset() { + *x = WarpWireguardConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WarpWireguardConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WarpWireguardConfig) ProtoMessage() {} + +func (x *WarpWireguardConfig) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WarpWireguardConfig.ProtoReflect.Descriptor instead. func (*WarpWireguardConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{12} + return file_hiddify_proto_rawDescGZIP(), []int{9} } -func (m *WarpWireguardConfig) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WarpWireguardConfig.Unmarshal(m, b) -} -func (m *WarpWireguardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WarpWireguardConfig.Marshal(b, m, deterministic) -} -func (m *WarpWireguardConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_WarpWireguardConfig.Merge(m, src) -} -func (m *WarpWireguardConfig) XXX_Size() int { - return xxx_messageInfo_WarpWireguardConfig.Size(m) -} -func (m *WarpWireguardConfig) XXX_DiscardUnknown() { - xxx_messageInfo_WarpWireguardConfig.DiscardUnknown(m) -} - -var xxx_messageInfo_WarpWireguardConfig proto.InternalMessageInfo - -func (m *WarpWireguardConfig) GetPrivateKey() string { - if m != nil { - return m.PrivateKey +func (x *WarpWireguardConfig) GetPrivateKey() string { + if x != nil { + return x.PrivateKey } return "" } -func (m *WarpWireguardConfig) GetLocalAddressIpv4() string { - if m != nil { - return m.LocalAddressIpv4 +func (x *WarpWireguardConfig) GetLocalAddressIpv4() string { + if x != nil { + return x.LocalAddressIpv4 } return "" } -func (m *WarpWireguardConfig) GetLocalAddressIpv6() string { - if m != nil { - return m.LocalAddressIpv6 +func (x *WarpWireguardConfig) GetLocalAddressIpv6() string { + if x != nil { + return x.LocalAddressIpv6 } return "" } -func (m *WarpWireguardConfig) GetPeerPublicKey() string { - if m != nil { - return m.PeerPublicKey +func (x *WarpWireguardConfig) GetPeerPublicKey() string { + if x != nil { + return x.PeerPublicKey } return "" } -func (m *WarpWireguardConfig) GetClientId() string { - if m != nil { - return m.ClientId +func (x *WarpWireguardConfig) GetClientId() string { + if x != nil { + return x.ClientId } return "" } type WarpGenerationResponse struct { - Account *WarpAccount `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - Log string `protobuf:"bytes,2,opt,name=log,proto3" json:"log,omitempty"` - Config *WarpWireguardConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account *WarpAccount `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Log string `protobuf:"bytes,2,opt,name=log,proto3" json:"log,omitempty"` + Config *WarpWireguardConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` } -func (m *WarpGenerationResponse) Reset() { *m = WarpGenerationResponse{} } -func (m *WarpGenerationResponse) String() string { return proto.CompactTextString(m) } -func (*WarpGenerationResponse) ProtoMessage() {} +func (x *WarpGenerationResponse) Reset() { + *x = WarpGenerationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WarpGenerationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WarpGenerationResponse) ProtoMessage() {} + +func (x *WarpGenerationResponse) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WarpGenerationResponse.ProtoReflect.Descriptor instead. func (*WarpGenerationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{13} + return file_hiddify_proto_rawDescGZIP(), []int{10} } -func (m *WarpGenerationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WarpGenerationResponse.Unmarshal(m, b) -} -func (m *WarpGenerationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WarpGenerationResponse.Marshal(b, m, deterministic) -} -func (m *WarpGenerationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_WarpGenerationResponse.Merge(m, src) -} -func (m *WarpGenerationResponse) XXX_Size() int { - return xxx_messageInfo_WarpGenerationResponse.Size(m) -} -func (m *WarpGenerationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_WarpGenerationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_WarpGenerationResponse proto.InternalMessageInfo - -func (m *WarpGenerationResponse) GetAccount() *WarpAccount { - if m != nil { - return m.Account +func (x *WarpGenerationResponse) GetAccount() *WarpAccount { + if x != nil { + return x.Account } return nil } -func (m *WarpGenerationResponse) GetLog() string { - if m != nil { - return m.Log +func (x *WarpGenerationResponse) GetLog() string { + if x != nil { + return x.Log } return "" } -func (m *WarpGenerationResponse) GetConfig() *WarpWireguardConfig { - if m != nil { - return m.Config +func (x *WarpGenerationResponse) GetConfig() *WarpWireguardConfig { + if x != nil { + return x.Config } return nil } type SystemProxyStatus struct { - Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` } -func (m *SystemProxyStatus) Reset() { *m = SystemProxyStatus{} } -func (m *SystemProxyStatus) String() string { return proto.CompactTextString(m) } -func (*SystemProxyStatus) ProtoMessage() {} +func (x *SystemProxyStatus) Reset() { + *x = SystemProxyStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemProxyStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemProxyStatus) ProtoMessage() {} + +func (x *SystemProxyStatus) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SystemProxyStatus.ProtoReflect.Descriptor instead. func (*SystemProxyStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{14} + return file_hiddify_proto_rawDescGZIP(), []int{11} } -func (m *SystemProxyStatus) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SystemProxyStatus.Unmarshal(m, b) -} -func (m *SystemProxyStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SystemProxyStatus.Marshal(b, m, deterministic) -} -func (m *SystemProxyStatus) XXX_Merge(src proto.Message) { - xxx_messageInfo_SystemProxyStatus.Merge(m, src) -} -func (m *SystemProxyStatus) XXX_Size() int { - return xxx_messageInfo_SystemProxyStatus.Size(m) -} -func (m *SystemProxyStatus) XXX_DiscardUnknown() { - xxx_messageInfo_SystemProxyStatus.DiscardUnknown(m) -} - -var xxx_messageInfo_SystemProxyStatus proto.InternalMessageInfo - -func (m *SystemProxyStatus) GetAvailable() bool { - if m != nil { - return m.Available +func (x *SystemProxyStatus) GetAvailable() bool { + if x != nil { + return x.Available } return false } -func (m *SystemProxyStatus) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *SystemProxyStatus) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } type ParseRequest struct { - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - ConfigPath string `protobuf:"bytes,2,opt,name=config_path,json=configPath,proto3" json:"config_path,omitempty"` - TempPath string `protobuf:"bytes,3,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"` - Debug bool `protobuf:"varint,4,opt,name=debug,proto3" json:"debug,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + ConfigPath string `protobuf:"bytes,2,opt,name=config_path,json=configPath,proto3" json:"config_path,omitempty"` + TempPath string `protobuf:"bytes,3,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"` + Debug bool `protobuf:"varint,4,opt,name=debug,proto3" json:"debug,omitempty"` } -func (m *ParseRequest) Reset() { *m = ParseRequest{} } -func (m *ParseRequest) String() string { return proto.CompactTextString(m) } -func (*ParseRequest) ProtoMessage() {} +func (x *ParseRequest) Reset() { + *x = ParseRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParseRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParseRequest) ProtoMessage() {} + +func (x *ParseRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParseRequest.ProtoReflect.Descriptor instead. func (*ParseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{15} + return file_hiddify_proto_rawDescGZIP(), []int{12} } -func (m *ParseRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ParseRequest.Unmarshal(m, b) -} -func (m *ParseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ParseRequest.Marshal(b, m, deterministic) -} -func (m *ParseRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParseRequest.Merge(m, src) -} -func (m *ParseRequest) XXX_Size() int { - return xxx_messageInfo_ParseRequest.Size(m) -} -func (m *ParseRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ParseRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ParseRequest proto.InternalMessageInfo - -func (m *ParseRequest) GetContent() string { - if m != nil { - return m.Content +func (x *ParseRequest) GetContent() string { + if x != nil { + return x.Content } return "" } -func (m *ParseRequest) GetConfigPath() string { - if m != nil { - return m.ConfigPath +func (x *ParseRequest) GetConfigPath() string { + if x != nil { + return x.ConfigPath } return "" } -func (m *ParseRequest) GetTempPath() string { - if m != nil { - return m.TempPath +func (x *ParseRequest) GetTempPath() string { + if x != nil { + return x.TempPath } return "" } -func (m *ParseRequest) GetDebug() bool { - if m != nil { - return m.Debug +func (x *ParseRequest) GetDebug() bool { + if x != nil { + return x.Debug } return false } type ParseResponse struct { - ResponseCode ResponseCode `protobuf:"varint,1,opt,name=response_code,json=responseCode,proto3,enum=hiddifyrpc.ResponseCode" json:"response_code,omitempty"` - Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResponseCode ResponseCode `protobuf:"varint,1,opt,name=response_code,json=responseCode,proto3,enum=hiddifyrpc.ResponseCode" json:"response_code,omitempty"` + Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` } -func (m *ParseResponse) Reset() { *m = ParseResponse{} } -func (m *ParseResponse) String() string { return proto.CompactTextString(m) } -func (*ParseResponse) ProtoMessage() {} +func (x *ParseResponse) Reset() { + *x = ParseResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParseResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParseResponse) ProtoMessage() {} + +func (x *ParseResponse) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParseResponse.ProtoReflect.Descriptor instead. func (*ParseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{16} + return file_hiddify_proto_rawDescGZIP(), []int{13} } -func (m *ParseResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ParseResponse.Unmarshal(m, b) -} -func (m *ParseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ParseResponse.Marshal(b, m, deterministic) -} -func (m *ParseResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParseResponse.Merge(m, src) -} -func (m *ParseResponse) XXX_Size() int { - return xxx_messageInfo_ParseResponse.Size(m) -} -func (m *ParseResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ParseResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ParseResponse proto.InternalMessageInfo - -func (m *ParseResponse) GetResponseCode() ResponseCode { - if m != nil { - return m.ResponseCode +func (x *ParseResponse) GetResponseCode() ResponseCode { + if x != nil { + return x.ResponseCode } return ResponseCode_OK } -func (m *ParseResponse) GetContent() string { - if m != nil { - return m.Content +func (x *ParseResponse) GetContent() string { + if x != nil { + return x.Content } return "" } -func (m *ParseResponse) GetMessage() string { - if m != nil { - return m.Message +func (x *ParseResponse) GetMessage() string { + if x != nil { + return x.Message } return "" } type ChangeConfigOptionsRequest struct { - ConfigOptionsJson string `protobuf:"bytes,1,opt,name=config_options_json,json=configOptionsJson,proto3" json:"config_options_json,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ConfigOptionsJson string `protobuf:"bytes,1,opt,name=config_options_json,json=configOptionsJson,proto3" json:"config_options_json,omitempty"` } -func (m *ChangeConfigOptionsRequest) Reset() { *m = ChangeConfigOptionsRequest{} } -func (m *ChangeConfigOptionsRequest) String() string { return proto.CompactTextString(m) } -func (*ChangeConfigOptionsRequest) ProtoMessage() {} +func (x *ChangeConfigOptionsRequest) Reset() { + *x = ChangeConfigOptionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChangeConfigOptionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChangeConfigOptionsRequest) ProtoMessage() {} + +func (x *ChangeConfigOptionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChangeConfigOptionsRequest.ProtoReflect.Descriptor instead. func (*ChangeConfigOptionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{17} + return file_hiddify_proto_rawDescGZIP(), []int{14} } -func (m *ChangeConfigOptionsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChangeConfigOptionsRequest.Unmarshal(m, b) -} -func (m *ChangeConfigOptionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChangeConfigOptionsRequest.Marshal(b, m, deterministic) -} -func (m *ChangeConfigOptionsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChangeConfigOptionsRequest.Merge(m, src) -} -func (m *ChangeConfigOptionsRequest) XXX_Size() int { - return xxx_messageInfo_ChangeConfigOptionsRequest.Size(m) -} -func (m *ChangeConfigOptionsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ChangeConfigOptionsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ChangeConfigOptionsRequest proto.InternalMessageInfo - -func (m *ChangeConfigOptionsRequest) GetConfigOptionsJson() string { - if m != nil { - return m.ConfigOptionsJson +func (x *ChangeConfigOptionsRequest) GetConfigOptionsJson() string { + if x != nil { + return x.ConfigOptionsJson } return "" } type GenerateConfigRequest struct { - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - TempPath string `protobuf:"bytes,2,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"` - Debug bool `protobuf:"varint,3,opt,name=debug,proto3" json:"debug,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + TempPath string `protobuf:"bytes,2,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"` + Debug bool `protobuf:"varint,3,opt,name=debug,proto3" json:"debug,omitempty"` } -func (m *GenerateConfigRequest) Reset() { *m = GenerateConfigRequest{} } -func (m *GenerateConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GenerateConfigRequest) ProtoMessage() {} +func (x *GenerateConfigRequest) Reset() { + *x = GenerateConfigRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateConfigRequest) ProtoMessage() {} + +func (x *GenerateConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateConfigRequest.ProtoReflect.Descriptor instead. func (*GenerateConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{18} + return file_hiddify_proto_rawDescGZIP(), []int{15} } -func (m *GenerateConfigRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateConfigRequest.Unmarshal(m, b) -} -func (m *GenerateConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateConfigRequest.Marshal(b, m, deterministic) -} -func (m *GenerateConfigRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateConfigRequest.Merge(m, src) -} -func (m *GenerateConfigRequest) XXX_Size() int { - return xxx_messageInfo_GenerateConfigRequest.Size(m) -} -func (m *GenerateConfigRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateConfigRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GenerateConfigRequest proto.InternalMessageInfo - -func (m *GenerateConfigRequest) GetPath() string { - if m != nil { - return m.Path +func (x *GenerateConfigRequest) GetPath() string { + if x != nil { + return x.Path } return "" } -func (m *GenerateConfigRequest) GetTempPath() string { - if m != nil { - return m.TempPath +func (x *GenerateConfigRequest) GetTempPath() string { + if x != nil { + return x.TempPath } return "" } -func (m *GenerateConfigRequest) GetDebug() bool { - if m != nil { - return m.Debug +func (x *GenerateConfigRequest) GetDebug() bool { + if x != nil { + return x.Debug } return false } type GenerateConfigResponse struct { - ConfigContent string `protobuf:"bytes,1,opt,name=config_content,json=configContent,proto3" json:"config_content,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ConfigContent string `protobuf:"bytes,1,opt,name=config_content,json=configContent,proto3" json:"config_content,omitempty"` } -func (m *GenerateConfigResponse) Reset() { *m = GenerateConfigResponse{} } -func (m *GenerateConfigResponse) String() string { return proto.CompactTextString(m) } -func (*GenerateConfigResponse) ProtoMessage() {} +func (x *GenerateConfigResponse) Reset() { + *x = GenerateConfigResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateConfigResponse) ProtoMessage() {} + +func (x *GenerateConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateConfigResponse.ProtoReflect.Descriptor instead. func (*GenerateConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{19} + return file_hiddify_proto_rawDescGZIP(), []int{16} } -func (m *GenerateConfigResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateConfigResponse.Unmarshal(m, b) -} -func (m *GenerateConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateConfigResponse.Marshal(b, m, deterministic) -} -func (m *GenerateConfigResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateConfigResponse.Merge(m, src) -} -func (m *GenerateConfigResponse) XXX_Size() int { - return xxx_messageInfo_GenerateConfigResponse.Size(m) -} -func (m *GenerateConfigResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateConfigResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GenerateConfigResponse proto.InternalMessageInfo - -func (m *GenerateConfigResponse) GetConfigContent() string { - if m != nil { - return m.ConfigContent +func (x *GenerateConfigResponse) GetConfigContent() string { + if x != nil { + return x.ConfigContent } return "" } type SelectOutboundRequest struct { - GroupTag string `protobuf:"bytes,1,opt,name=group_tag,json=groupTag,proto3" json:"group_tag,omitempty"` - OutboundTag string `protobuf:"bytes,2,opt,name=outbound_tag,json=outboundTag,proto3" json:"outbound_tag,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupTag string `protobuf:"bytes,1,opt,name=group_tag,json=groupTag,proto3" json:"group_tag,omitempty"` + OutboundTag string `protobuf:"bytes,2,opt,name=outbound_tag,json=outboundTag,proto3" json:"outbound_tag,omitempty"` } -func (m *SelectOutboundRequest) Reset() { *m = SelectOutboundRequest{} } -func (m *SelectOutboundRequest) String() string { return proto.CompactTextString(m) } -func (*SelectOutboundRequest) ProtoMessage() {} +func (x *SelectOutboundRequest) Reset() { + *x = SelectOutboundRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SelectOutboundRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectOutboundRequest) ProtoMessage() {} + +func (x *SelectOutboundRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectOutboundRequest.ProtoReflect.Descriptor instead. func (*SelectOutboundRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{20} + return file_hiddify_proto_rawDescGZIP(), []int{17} } -func (m *SelectOutboundRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SelectOutboundRequest.Unmarshal(m, b) -} -func (m *SelectOutboundRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SelectOutboundRequest.Marshal(b, m, deterministic) -} -func (m *SelectOutboundRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SelectOutboundRequest.Merge(m, src) -} -func (m *SelectOutboundRequest) XXX_Size() int { - return xxx_messageInfo_SelectOutboundRequest.Size(m) -} -func (m *SelectOutboundRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SelectOutboundRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SelectOutboundRequest proto.InternalMessageInfo - -func (m *SelectOutboundRequest) GetGroupTag() string { - if m != nil { - return m.GroupTag +func (x *SelectOutboundRequest) GetGroupTag() string { + if x != nil { + return x.GroupTag } return "" } -func (m *SelectOutboundRequest) GetOutboundTag() string { - if m != nil { - return m.OutboundTag +func (x *SelectOutboundRequest) GetOutboundTag() string { + if x != nil { + return x.OutboundTag } return "" } type UrlTestRequest struct { - GroupTag string `protobuf:"bytes,1,opt,name=group_tag,json=groupTag,proto3" json:"group_tag,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupTag string `protobuf:"bytes,1,opt,name=group_tag,json=groupTag,proto3" json:"group_tag,omitempty"` } -func (m *UrlTestRequest) Reset() { *m = UrlTestRequest{} } -func (m *UrlTestRequest) String() string { return proto.CompactTextString(m) } -func (*UrlTestRequest) ProtoMessage() {} +func (x *UrlTestRequest) Reset() { + *x = UrlTestRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UrlTestRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UrlTestRequest) ProtoMessage() {} + +func (x *UrlTestRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UrlTestRequest.ProtoReflect.Descriptor instead. func (*UrlTestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{21} + return file_hiddify_proto_rawDescGZIP(), []int{18} } -func (m *UrlTestRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UrlTestRequest.Unmarshal(m, b) -} -func (m *UrlTestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UrlTestRequest.Marshal(b, m, deterministic) -} -func (m *UrlTestRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UrlTestRequest.Merge(m, src) -} -func (m *UrlTestRequest) XXX_Size() int { - return xxx_messageInfo_UrlTestRequest.Size(m) -} -func (m *UrlTestRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UrlTestRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UrlTestRequest proto.InternalMessageInfo - -func (m *UrlTestRequest) GetGroupTag() string { - if m != nil { - return m.GroupTag +func (x *UrlTestRequest) GetGroupTag() string { + if x != nil { + return x.GroupTag } return "" } type GenerateWarpConfigRequest struct { - LicenseKey string `protobuf:"bytes,1,opt,name=license_key,json=licenseKey,proto3" json:"license_key,omitempty"` - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - AccessToken string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LicenseKey string `protobuf:"bytes,1,opt,name=license_key,json=licenseKey,proto3" json:"license_key,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccessToken string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` } -func (m *GenerateWarpConfigRequest) Reset() { *m = GenerateWarpConfigRequest{} } -func (m *GenerateWarpConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GenerateWarpConfigRequest) ProtoMessage() {} +func (x *GenerateWarpConfigRequest) Reset() { + *x = GenerateWarpConfigRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateWarpConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateWarpConfigRequest) ProtoMessage() {} + +func (x *GenerateWarpConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateWarpConfigRequest.ProtoReflect.Descriptor instead. func (*GenerateWarpConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{22} + return file_hiddify_proto_rawDescGZIP(), []int{19} } -func (m *GenerateWarpConfigRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateWarpConfigRequest.Unmarshal(m, b) -} -func (m *GenerateWarpConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateWarpConfigRequest.Marshal(b, m, deterministic) -} -func (m *GenerateWarpConfigRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateWarpConfigRequest.Merge(m, src) -} -func (m *GenerateWarpConfigRequest) XXX_Size() int { - return xxx_messageInfo_GenerateWarpConfigRequest.Size(m) -} -func (m *GenerateWarpConfigRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateWarpConfigRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GenerateWarpConfigRequest proto.InternalMessageInfo - -func (m *GenerateWarpConfigRequest) GetLicenseKey() string { - if m != nil { - return m.LicenseKey +func (x *GenerateWarpConfigRequest) GetLicenseKey() string { + if x != nil { + return x.LicenseKey } return "" } -func (m *GenerateWarpConfigRequest) GetAccountId() string { - if m != nil { - return m.AccountId +func (x *GenerateWarpConfigRequest) GetAccountId() string { + if x != nil { + return x.AccountId } return "" } -func (m *GenerateWarpConfigRequest) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *GenerateWarpConfigRequest) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } type SetSystemProxyEnabledRequest struct { - IsEnabled bool `protobuf:"varint,1,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsEnabled bool `protobuf:"varint,1,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` } -func (m *SetSystemProxyEnabledRequest) Reset() { *m = SetSystemProxyEnabledRequest{} } -func (m *SetSystemProxyEnabledRequest) String() string { return proto.CompactTextString(m) } -func (*SetSystemProxyEnabledRequest) ProtoMessage() {} +func (x *SetSystemProxyEnabledRequest) Reset() { + *x = SetSystemProxyEnabledRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetSystemProxyEnabledRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetSystemProxyEnabledRequest) ProtoMessage() {} + +func (x *SetSystemProxyEnabledRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetSystemProxyEnabledRequest.ProtoReflect.Descriptor instead. func (*SetSystemProxyEnabledRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{23} + return file_hiddify_proto_rawDescGZIP(), []int{20} } -func (m *SetSystemProxyEnabledRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetSystemProxyEnabledRequest.Unmarshal(m, b) -} -func (m *SetSystemProxyEnabledRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetSystemProxyEnabledRequest.Marshal(b, m, deterministic) -} -func (m *SetSystemProxyEnabledRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetSystemProxyEnabledRequest.Merge(m, src) -} -func (m *SetSystemProxyEnabledRequest) XXX_Size() int { - return xxx_messageInfo_SetSystemProxyEnabledRequest.Size(m) -} -func (m *SetSystemProxyEnabledRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetSystemProxyEnabledRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SetSystemProxyEnabledRequest proto.InternalMessageInfo - -func (m *SetSystemProxyEnabledRequest) GetIsEnabled() bool { - if m != nil { - return m.IsEnabled +func (x *SetSystemProxyEnabledRequest) GetIsEnabled() bool { + if x != nil { + return x.IsEnabled } return false } type LogMessage struct { - Level LogLevel `protobuf:"varint,1,opt,name=level,proto3,enum=hiddifyrpc.LogLevel" json:"level,omitempty"` - Type LogType `protobuf:"varint,2,opt,name=type,proto3,enum=hiddifyrpc.LogType" json:"type,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level LogLevel `protobuf:"varint,1,opt,name=level,proto3,enum=hiddifyrpc.LogLevel" json:"level,omitempty"` + Type LogType `protobuf:"varint,2,opt,name=type,proto3,enum=hiddifyrpc.LogType" json:"type,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` } -func (m *LogMessage) Reset() { *m = LogMessage{} } -func (m *LogMessage) String() string { return proto.CompactTextString(m) } -func (*LogMessage) ProtoMessage() {} +func (x *LogMessage) Reset() { + *x = LogMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogMessage) ProtoMessage() {} + +func (x *LogMessage) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogMessage.ProtoReflect.Descriptor instead. func (*LogMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{24} + return file_hiddify_proto_rawDescGZIP(), []int{21} } -func (m *LogMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LogMessage.Unmarshal(m, b) -} -func (m *LogMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LogMessage.Marshal(b, m, deterministic) -} -func (m *LogMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_LogMessage.Merge(m, src) -} -func (m *LogMessage) XXX_Size() int { - return xxx_messageInfo_LogMessage.Size(m) -} -func (m *LogMessage) XXX_DiscardUnknown() { - xxx_messageInfo_LogMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_LogMessage proto.InternalMessageInfo - -func (m *LogMessage) GetLevel() LogLevel { - if m != nil { - return m.Level +func (x *LogMessage) GetLevel() LogLevel { + if x != nil { + return x.Level } return LogLevel_DEBUG } -func (m *LogMessage) GetType() LogType { - if m != nil { - return m.Type +func (x *LogMessage) GetType() LogType { + if x != nil { + return x.Type } return LogType_CORE } -func (m *LogMessage) GetMessage() string { - if m != nil { - return m.Message +func (x *LogMessage) GetMessage() string { + if x != nil { + return x.Message } return "" } type StopRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *StopRequest) Reset() { *m = StopRequest{} } -func (m *StopRequest) String() string { return proto.CompactTextString(m) } -func (*StopRequest) ProtoMessage() {} +func (x *StopRequest) Reset() { + *x = StopRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopRequest) ProtoMessage() {} + +func (x *StopRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopRequest.ProtoReflect.Descriptor instead. func (*StopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{25} + return file_hiddify_proto_rawDescGZIP(), []int{22} } -func (m *StopRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StopRequest.Unmarshal(m, b) -} -func (m *StopRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StopRequest.Marshal(b, m, deterministic) -} -func (m *StopRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_StopRequest.Merge(m, src) -} -func (m *StopRequest) XXX_Size() int { - return xxx_messageInfo_StopRequest.Size(m) -} -func (m *StopRequest) XXX_DiscardUnknown() { - xxx_messageInfo_StopRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_StopRequest proto.InternalMessageInfo - type TunnelStartRequest struct { - Ipv6 bool `protobuf:"varint,1,opt,name=ipv6,proto3" json:"ipv6,omitempty"` - ServerPort int32 `protobuf:"varint,2,opt,name=server_port,json=serverPort,proto3" json:"server_port,omitempty"` - StrictRoute bool `protobuf:"varint,3,opt,name=strict_route,json=strictRoute,proto3" json:"strict_route,omitempty"` - EndpointIndependentNat bool `protobuf:"varint,4,opt,name=endpoint_independent_nat,json=endpointIndependentNat,proto3" json:"endpoint_independent_nat,omitempty"` - Stack string `protobuf:"bytes,5,opt,name=stack,proto3" json:"stack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ipv6 bool `protobuf:"varint,1,opt,name=ipv6,proto3" json:"ipv6,omitempty"` + ServerPort int32 `protobuf:"varint,2,opt,name=server_port,json=serverPort,proto3" json:"server_port,omitempty"` + StrictRoute bool `protobuf:"varint,3,opt,name=strict_route,json=strictRoute,proto3" json:"strict_route,omitempty"` + EndpointIndependentNat bool `protobuf:"varint,4,opt,name=endpoint_independent_nat,json=endpointIndependentNat,proto3" json:"endpoint_independent_nat,omitempty"` + Stack string `protobuf:"bytes,5,opt,name=stack,proto3" json:"stack,omitempty"` } -func (m *TunnelStartRequest) Reset() { *m = TunnelStartRequest{} } -func (m *TunnelStartRequest) String() string { return proto.CompactTextString(m) } -func (*TunnelStartRequest) ProtoMessage() {} +func (x *TunnelStartRequest) Reset() { + *x = TunnelStartRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TunnelStartRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TunnelStartRequest) ProtoMessage() {} + +func (x *TunnelStartRequest) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TunnelStartRequest.ProtoReflect.Descriptor instead. func (*TunnelStartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{26} + return file_hiddify_proto_rawDescGZIP(), []int{23} } -func (m *TunnelStartRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TunnelStartRequest.Unmarshal(m, b) -} -func (m *TunnelStartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TunnelStartRequest.Marshal(b, m, deterministic) -} -func (m *TunnelStartRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_TunnelStartRequest.Merge(m, src) -} -func (m *TunnelStartRequest) XXX_Size() int { - return xxx_messageInfo_TunnelStartRequest.Size(m) -} -func (m *TunnelStartRequest) XXX_DiscardUnknown() { - xxx_messageInfo_TunnelStartRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_TunnelStartRequest proto.InternalMessageInfo - -func (m *TunnelStartRequest) GetIpv6() bool { - if m != nil { - return m.Ipv6 +func (x *TunnelStartRequest) GetIpv6() bool { + if x != nil { + return x.Ipv6 } return false } -func (m *TunnelStartRequest) GetServerPort() int32 { - if m != nil { - return m.ServerPort +func (x *TunnelStartRequest) GetServerPort() int32 { + if x != nil { + return x.ServerPort } return 0 } -func (m *TunnelStartRequest) GetStrictRoute() bool { - if m != nil { - return m.StrictRoute +func (x *TunnelStartRequest) GetStrictRoute() bool { + if x != nil { + return x.StrictRoute } return false } -func (m *TunnelStartRequest) GetEndpointIndependentNat() bool { - if m != nil { - return m.EndpointIndependentNat +func (x *TunnelStartRequest) GetEndpointIndependentNat() bool { + if x != nil { + return x.EndpointIndependentNat } return false } -func (m *TunnelStartRequest) GetStack() string { - if m != nil { - return m.Stack +func (x *TunnelStartRequest) GetStack() string { + if x != nil { + return x.Stack } return "" } type TunnelResponse struct { - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` } -func (m *TunnelResponse) Reset() { *m = TunnelResponse{} } -func (m *TunnelResponse) String() string { return proto.CompactTextString(m) } -func (*TunnelResponse) ProtoMessage() {} +func (x *TunnelResponse) Reset() { + *x = TunnelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_hiddify_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TunnelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TunnelResponse) ProtoMessage() {} + +func (x *TunnelResponse) ProtoReflect() protoreflect.Message { + mi := &file_hiddify_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TunnelResponse.ProtoReflect.Descriptor instead. func (*TunnelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_b52c484803f63ee3, []int{27} + return file_hiddify_proto_rawDescGZIP(), []int{24} } -func (m *TunnelResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TunnelResponse.Unmarshal(m, b) -} -func (m *TunnelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TunnelResponse.Marshal(b, m, deterministic) -} -func (m *TunnelResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_TunnelResponse.Merge(m, src) -} -func (m *TunnelResponse) XXX_Size() int { - return xxx_messageInfo_TunnelResponse.Size(m) -} -func (m *TunnelResponse) XXX_DiscardUnknown() { - xxx_messageInfo_TunnelResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_TunnelResponse proto.InternalMessageInfo - -func (m *TunnelResponse) GetMessage() string { - if m != nil { - return m.Message +func (x *TunnelResponse) GetMessage() string { + if x != nil { + return x.Message } return "" } -func init() { - proto.RegisterEnum("hiddifyrpc.ResponseCode", ResponseCode_name, ResponseCode_value) - proto.RegisterEnum("hiddifyrpc.CoreState", CoreState_name, CoreState_value) - proto.RegisterEnum("hiddifyrpc.MessageType", MessageType_name, MessageType_value) - proto.RegisterEnum("hiddifyrpc.LogLevel", LogLevel_name, LogLevel_value) - proto.RegisterEnum("hiddifyrpc.LogType", LogType_name, LogType_value) - proto.RegisterType((*CoreInfoResponse)(nil), "hiddifyrpc.CoreInfoResponse") - proto.RegisterType((*StartRequest)(nil), "hiddifyrpc.StartRequest") - proto.RegisterType((*SetupRequest)(nil), "hiddifyrpc.SetupRequest") - proto.RegisterType((*Response)(nil), "hiddifyrpc.Response") - proto.RegisterType((*HelloRequest)(nil), "hiddifyrpc.HelloRequest") - proto.RegisterType((*HelloResponse)(nil), "hiddifyrpc.HelloResponse") - proto.RegisterType((*Empty)(nil), "hiddifyrpc.Empty") - proto.RegisterType((*SystemInfo)(nil), "hiddifyrpc.SystemInfo") - proto.RegisterType((*OutboundGroupItem)(nil), "hiddifyrpc.OutboundGroupItem") - proto.RegisterType((*OutboundGroup)(nil), "hiddifyrpc.OutboundGroup") - proto.RegisterType((*OutboundGroupList)(nil), "hiddifyrpc.OutboundGroupList") - proto.RegisterType((*WarpAccount)(nil), "hiddifyrpc.WarpAccount") - proto.RegisterType((*WarpWireguardConfig)(nil), "hiddifyrpc.WarpWireguardConfig") - proto.RegisterType((*WarpGenerationResponse)(nil), "hiddifyrpc.WarpGenerationResponse") - proto.RegisterType((*SystemProxyStatus)(nil), "hiddifyrpc.SystemProxyStatus") - proto.RegisterType((*ParseRequest)(nil), "hiddifyrpc.ParseRequest") - proto.RegisterType((*ParseResponse)(nil), "hiddifyrpc.ParseResponse") - proto.RegisterType((*ChangeConfigOptionsRequest)(nil), "hiddifyrpc.ChangeConfigOptionsRequest") - proto.RegisterType((*GenerateConfigRequest)(nil), "hiddifyrpc.GenerateConfigRequest") - proto.RegisterType((*GenerateConfigResponse)(nil), "hiddifyrpc.GenerateConfigResponse") - proto.RegisterType((*SelectOutboundRequest)(nil), "hiddifyrpc.SelectOutboundRequest") - proto.RegisterType((*UrlTestRequest)(nil), "hiddifyrpc.UrlTestRequest") - proto.RegisterType((*GenerateWarpConfigRequest)(nil), "hiddifyrpc.GenerateWarpConfigRequest") - proto.RegisterType((*SetSystemProxyEnabledRequest)(nil), "hiddifyrpc.SetSystemProxyEnabledRequest") - proto.RegisterType((*LogMessage)(nil), "hiddifyrpc.LogMessage") - proto.RegisterType((*StopRequest)(nil), "hiddifyrpc.StopRequest") - proto.RegisterType((*TunnelStartRequest)(nil), "hiddifyrpc.TunnelStartRequest") - proto.RegisterType((*TunnelResponse)(nil), "hiddifyrpc.TunnelResponse") +var File_hiddify_proto protoreflect.FileDescriptor + +var file_hiddify_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0a, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x1a, 0x0a, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0a, + 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, + 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, + 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x6d, + 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, + 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4f, + 0x6c, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x2a, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x61, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x6b, 0x0a, 0x0c, 0x53, + 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x62, 0x61, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x65, 0x6d, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x65, 0x6d, 0x70, 0x50, 0x61, 0x74, 0x68, 0x22, 0x63, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbf, 0x02, + 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x6f, 0x72, 0x6f, 0x75, 0x74, + 0x69, 0x6e, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x4f, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, + 0x83, 0x01, 0x0a, 0x11, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x75, + 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x75, 0x72, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x24, 0x0a, 0x0e, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x75, 0x72, 0x6c, 0x54, 0x65, 0x73, 0x74, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x86, 0x01, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, + 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x44, + 0x0a, 0x11, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x22, 0x4f, 0x0a, 0x0b, 0x57, 0x61, 0x72, 0x70, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd7, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x72, 0x70, 0x57, 0x69, + 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, + 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2c, + 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x69, 0x70, 0x76, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x12, 0x2c, 0x0a, 0x12, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x36, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x65, + 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x96, 0x01, 0x0a, 0x16, 0x57, 0x61, 0x72, 0x70, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x72, 0x70, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, + 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x72, + 0x70, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4b, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x0c, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, + 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x65, + 0x62, 0x75, 0x67, 0x22, 0x82, 0x01, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x68, + 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4c, 0x0a, 0x1a, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x22, 0x3f, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x15, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x67, 0x12, 0x21, 0x0a, + 0x0c, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, + 0x22, 0x2d, 0x0a, 0x0e, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x67, 0x22, + 0x7e, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x61, 0x72, 0x70, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x3d, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x7b, + 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x53, + 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x12, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x04, 0x69, 0x70, 0x76, 0x36, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x74, 0x5f, 0x6e, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, + 0x4e, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x22, 0x2a, 0x0a, 0x0e, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x41, 0x0a, 0x09, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, + 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0xcd, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, + 0x59, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x04, 0x12, 0x14, 0x0a, + 0x10, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x4c, 0x52, 0x45, + 0x41, 0x44, 0x59, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x07, 0x12, 0x16, 0x0a, + 0x12, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, + 0x55, 0x4e, 0x44, 0x10, 0x08, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, + 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x09, 0x12, + 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x41, + 0x52, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x0c, 0x12, 0x18, + 0x0a, 0x14, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x0d, 0x2a, 0x42, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, + 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x04, 0x2a, 0x2c, 0x0a, 0x07, + 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x45, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0a, + 0x0a, 0x06, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02, 0x32, 0x93, 0x01, 0x0a, 0x05, 0x48, + 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x3f, 0x0a, 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, + 0x12, 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, + 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x68, 0x69, 0x64, + 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x19, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x48, + 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, + 0x32, 0xe2, 0x09, 0x0a, 0x04, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x68, + 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x43, 0x6f, + 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x17, + 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0d, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x68, 0x69, 0x64, + 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, + 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, + 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x11, 0x4d, 0x61, 0x69, 0x6e, 0x4f, 0x75, + 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, + 0x63, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, + 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x28, 0x01, 0x30, 0x01, 0x12, 0x37, 0x0a, + 0x05, 0x53, 0x65, 0x74, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x14, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, + 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, + 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x68, 0x69, 0x64, 0x64, + 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x18, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x53, 0x74, 0x6f, + 0x70, 0x12, 0x11, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x2e, + 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x21, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x68, 0x69, 0x64, + 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x07, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, + 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x61, 0x72, 0x70, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x61, 0x72, 0x70, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x69, 0x64, + 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x72, 0x70, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x11, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x68, 0x69, 0x64, 0x64, + 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x57, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x28, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x68, 0x69, + 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x12, 0x17, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x68, 0x69, 0x64, 0x64, + 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0xfb, 0x01, 0x0a, 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x1e, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, + 0x53, 0x74, 0x6f, 0x70, 0x12, 0x11, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, + 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x11, 0x2e, + 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x1a, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, + 0x45, 0x78, 0x69, 0x74, 0x12, 0x11, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, 0x72, 0x70, + 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, + 0x79, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2f, 0x68, 0x69, 0x64, 0x64, 0x69, 0x66, 0x79, + 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { proto.RegisterFile("hiddifyrpc/hiddify.proto", fileDescriptor_b52c484803f63ee3) } +var ( + file_hiddify_proto_rawDescOnce sync.Once + file_hiddify_proto_rawDescData = file_hiddify_proto_rawDesc +) -var fileDescriptor_b52c484803f63ee3 = []byte{ - // 2025 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x6f, 0xe3, 0xc6, - 0x15, 0x36, 0x75, 0xb1, 0xa4, 0x23, 0xc9, 0x4b, 0x8f, 0xbd, 0x8e, 0xac, 0xdd, 0xcd, 0x6e, 0x88, - 0x26, 0x71, 0xdd, 0xd4, 0x9b, 0x3a, 0xdb, 0x6c, 0x6f, 0xc1, 0x42, 0x96, 0x68, 0x47, 0x5d, 0x59, - 0x12, 0x28, 0xba, 0xdb, 0xb4, 0x40, 0x09, 0x9a, 0x1c, 0x6b, 0x59, 0x53, 0x1c, 0x96, 0x1c, 0x79, - 0x23, 0xb4, 0xe8, 0x43, 0x0b, 0xf4, 0xb9, 0x40, 0x81, 0x3e, 0xf6, 0x97, 0x14, 0xe8, 0x2f, 0xe8, - 0x73, 0xdf, 0xfb, 0x37, 0xfa, 0x52, 0xcc, 0x85, 0x12, 0x29, 0x4b, 0xeb, 0x34, 0xcd, 0xdb, 0xcc, - 0xb9, 0xf1, 0xcc, 0x99, 0x33, 0xdf, 0x7c, 0x43, 0x68, 0xbc, 0xf6, 0x5c, 0xd7, 0xbb, 0x9a, 0x45, - 0xa1, 0xf3, 0x54, 0x0e, 0x8f, 0xc2, 0x88, 0x50, 0x82, 0x60, 0xa1, 0xd1, 0xfe, 0xa6, 0x80, 0xda, - 0x26, 0x11, 0xee, 0x06, 0x57, 0xc4, 0xc0, 0x71, 0x48, 0x82, 0x18, 0xa3, 0x67, 0x00, 0x0e, 0x89, - 0xb0, 0x15, 0x53, 0x9b, 0xe2, 0x86, 0xf2, 0x44, 0x39, 0xd8, 0x3a, 0xbe, 0x7f, 0xb4, 0xf0, 0x3a, - 0x62, 0x1e, 0x23, 0xa6, 0x34, 0x2a, 0x4e, 0x32, 0x44, 0x3f, 0x82, 0xda, 0x04, 0xc7, 0xb1, 0x3d, - 0xc6, 0x16, 0x9d, 0x85, 0xb8, 0x91, 0xe3, 0x7e, 0xef, 0xa4, 0xfd, 0xce, 0x85, 0xde, 0x9c, 0x85, - 0xd8, 0xa8, 0x4e, 0x16, 0x13, 0xd4, 0x80, 0x92, 0x9c, 0x36, 0xf2, 0x4f, 0x94, 0x83, 0x8a, 0x91, - 0x4c, 0xb5, 0x3f, 0xe7, 0xa0, 0x36, 0xa2, 0x76, 0x44, 0x0d, 0xfc, 0x9b, 0x29, 0x8e, 0x29, 0x7a, - 0x0c, 0x55, 0x87, 0x04, 0x57, 0xde, 0xd8, 0x0a, 0x6d, 0xfa, 0x9a, 0x67, 0x57, 0x31, 0x40, 0x88, - 0x86, 0x36, 0x7d, 0x8d, 0xde, 0x87, 0x2d, 0x69, 0xe0, 0x90, 0x80, 0xe2, 0x80, 0xf2, 0x4c, 0x2a, - 0x46, 0x5d, 0x48, 0xdb, 0x42, 0x88, 0x3e, 0x86, 0x5d, 0xd7, 0x8b, 0xed, 0x4b, 0x1f, 0x5b, 0x13, - 0x3c, 0x21, 0xd1, 0xcc, 0xf2, 0xbd, 0x89, 0x47, 0xf9, 0xf7, 0xcb, 0x06, 0x92, 0xba, 0x73, 0xae, - 0xea, 0x31, 0x0d, 0xfb, 0xb2, 0x8b, 0x7d, 0x7b, 0xc6, 0xea, 0x12, 0xd1, 0x46, 0x81, 0x1b, 0x02, - 0x17, 0xf1, 0x0c, 0xd1, 0x0f, 0x61, 0x1f, 0x07, 0x3c, 0x22, 0xf1, 0x5d, 0xcb, 0x21, 0x93, 0x89, - 0x1d, 0xb8, 0x56, 0x8c, 0xa3, 0x1b, 0x1c, 0x35, 0x8a, 0xdc, 0x7c, 0x4f, 0x18, 0x0c, 0x7c, 0xb7, - 0x2d, 0xd4, 0x23, 0xae, 0x45, 0x87, 0xb0, 0x2d, 0x5d, 0x23, 0xfb, 0x8d, 0x25, 0x32, 0x6d, 0x6c, - 0x72, 0x97, 0x7b, 0x42, 0x61, 0xd8, 0x6f, 0xda, 0x5c, 0xac, 0x5d, 0x43, 0x6d, 0x84, 0xe9, 0x34, - 0x4c, 0x2a, 0xf2, 0x00, 0x2a, 0x97, 0x76, 0x8c, 0xd3, 0xf5, 0x28, 0x33, 0x01, 0xaf, 0xc6, 0x7b, - 0x50, 0x7b, 0x43, 0xa2, 0x6b, 0x2f, 0x90, 0xf5, 0x12, 0xb5, 0xa8, 0x4a, 0x19, 0x37, 0x79, 0x00, - 0x15, 0x8a, 0x27, 0xa1, 0xd0, 0x8b, 0xf2, 0x97, 0x99, 0x80, 0x29, 0x35, 0x07, 0xca, 0xf3, 0xbe, - 0xf8, 0x0c, 0xea, 0x91, 0x1c, 0x5b, 0x0e, 0x71, 0x93, 0xd6, 0x68, 0xa4, 0xb7, 0x38, 0x31, 0x6e, - 0x13, 0x17, 0x1b, 0xb5, 0x28, 0x35, 0x4b, 0x6f, 0x72, 0x2e, 0xbb, 0xc9, 0x1a, 0xd4, 0x3e, 0xc7, - 0xbe, 0x4f, 0x92, 0x15, 0x21, 0x28, 0x04, 0xf6, 0x04, 0xcb, 0xc5, 0xf0, 0xb1, 0xf6, 0x6d, 0xa8, - 0x4b, 0x1b, 0x99, 0x4d, 0x2a, 0x9c, 0x92, 0x0d, 0x57, 0x82, 0xa2, 0x3e, 0x09, 0xe9, 0x4c, 0xfb, - 0x47, 0x0e, 0x60, 0x34, 0x8b, 0x29, 0x9e, 0xb0, 0xfe, 0x46, 0x7b, 0xb0, 0x29, 0xb6, 0x9a, 0x3b, - 0xe4, 0x0d, 0x39, 0x43, 0xef, 0x02, 0x8c, 0x49, 0x44, 0xa6, 0xd4, 0x0b, 0x70, 0xcc, 0x73, 0x2b, - 0x1a, 0x29, 0x89, 0xec, 0xa8, 0x00, 0x3b, 0xd4, 0x23, 0x41, 0x6c, 0x79, 0x01, 0xaf, 0x52, 0x91, - 0x77, 0x54, 0x22, 0xed, 0x06, 0xe8, 0x43, 0xb8, 0x97, 0x36, 0x23, 0x53, 0xd1, 0x23, 0x45, 0x23, - 0xed, 0x3d, 0x98, 0x52, 0xf4, 0x1d, 0xd8, 0xa6, 0x91, 0x7d, 0x75, 0xe5, 0x39, 0x96, 0x7d, 0x63, - 0x7b, 0x3e, 0xdb, 0x5e, 0xd9, 0x1f, 0xaa, 0x54, 0xb4, 0x12, 0x39, 0x4b, 0x7a, 0x1a, 0xfa, 0x5e, - 0x70, 0xcd, 0xdb, 0x21, 0x6f, 0xc8, 0x19, 0x6a, 0x42, 0xd9, 0x25, 0x6f, 0x02, 0xae, 0x29, 0x71, - 0xcd, 0x7c, 0xce, 0x36, 0x5d, 0x58, 0x59, 0x94, 0x50, 0xdb, 0x6f, 0x94, 0xb9, 0xbe, 0x2a, 0x64, - 0x26, 0x13, 0xb1, 0x35, 0x25, 0xe6, 0xd2, 0xa8, 0xc2, 0x8d, 0xea, 0x89, 0x94, 0x9b, 0x69, 0x7f, - 0x54, 0x60, 0x7b, 0x30, 0xa5, 0x97, 0x64, 0x1a, 0xb8, 0x67, 0x11, 0x99, 0x86, 0x5d, 0x8a, 0x27, - 0x48, 0x85, 0x3c, 0xb5, 0xc7, 0xb2, 0xec, 0x6c, 0xc8, 0x76, 0x6c, 0x7e, 0xe8, 0x2b, 0x06, 0x1f, - 0x23, 0x0d, 0xea, 0xd3, 0xc8, 0xb7, 0x28, 0x8e, 0xa9, 0x45, 0xbd, 0x89, 0x38, 0xda, 0x2c, 0x8d, - 0xc8, 0x37, 0x71, 0x4c, 0x4d, 0x6f, 0x82, 0xd1, 0xb7, 0x60, 0x6b, 0x6e, 0xc3, 0x4f, 0x92, 0x2c, - 0x59, 0x4d, 0x1a, 0x75, 0x98, 0x4c, 0xfb, 0x93, 0x02, 0xf5, 0x4c, 0x16, 0x5f, 0x31, 0x83, 0x26, - 0x94, 0x63, 0xec, 0x63, 0x87, 0x62, 0x37, 0x69, 0xec, 0x64, 0x8e, 0x3e, 0x81, 0xa2, 0x47, 0xf1, - 0x24, 0x6e, 0x14, 0x9e, 0xe4, 0x0f, 0xaa, 0xc7, 0x8f, 0xd2, 0x4d, 0x7c, 0x6b, 0xc5, 0x86, 0xb0, - 0xd5, 0x3a, 0x4b, 0xd5, 0xe8, 0x79, 0x31, 0x45, 0x4f, 0x93, 0x48, 0x0a, 0x8f, 0xb4, 0xbf, 0x36, - 0x52, 0x12, 0x65, 0x00, 0xd5, 0x57, 0x76, 0x14, 0xb6, 0x1c, 0x87, 0x4c, 0x03, 0x8a, 0x1e, 0x01, - 0xd8, 0x62, 0x68, 0x79, 0xae, 0x5c, 0x52, 0x45, 0x4a, 0xba, 0x2e, 0xdb, 0x4c, 0xdb, 0x71, 0x70, - 0x1c, 0x5b, 0x94, 0x5c, 0xe3, 0x20, 0x39, 0xc1, 0x42, 0x66, 0x32, 0x91, 0xf6, 0x2f, 0x05, 0x76, - 0x58, 0xc4, 0x57, 0x5e, 0x84, 0xc7, 0x53, 0x3b, 0x72, 0x05, 0x52, 0x30, 0xc4, 0x0a, 0x23, 0xef, - 0xc6, 0xa6, 0xd8, 0xba, 0xc6, 0xb3, 0x04, 0x2b, 0xa5, 0xe8, 0x25, 0x9e, 0xa1, 0x8f, 0x00, 0xf9, - 0xc4, 0xb1, 0x7d, 0xcb, 0x76, 0xdd, 0x88, 0x7d, 0xc2, 0x0b, 0x6f, 0x9e, 0xc9, 0x2f, 0xa8, 0x5c, - 0xd3, 0x12, 0x8a, 0x6e, 0x78, 0xf3, 0x6c, 0xa5, 0xf5, 0xa7, 0xb2, 0xb0, 0xcb, 0xd6, 0x9f, 0xa2, - 0x0f, 0xe0, 0x5e, 0x88, 0x71, 0x64, 0x85, 0xd3, 0x4b, 0xdf, 0x73, 0x78, 0x02, 0x05, 0x01, 0xc4, - 0x4c, 0x3c, 0xe4, 0x52, 0x96, 0xc3, 0x03, 0xa8, 0x38, 0xbe, 0x87, 0xc5, 0xea, 0x8b, 0x62, 0x97, - 0x84, 0xa0, 0xeb, 0x6a, 0x7f, 0x55, 0x60, 0x8f, 0xad, 0xec, 0x0c, 0x07, 0x38, 0xb2, 0xd9, 0x09, - 0x9a, 0x9f, 0xff, 0xef, 0x41, 0x49, 0x16, 0x89, 0x2f, 0xac, 0x9a, 0xbd, 0x6a, 0x52, 0x05, 0x36, - 0x12, 0x3b, 0xd6, 0x35, 0x3e, 0x19, 0xcb, 0xf5, 0xb1, 0x21, 0x7a, 0x0e, 0x9b, 0x12, 0x6c, 0xf3, - 0x3c, 0xc6, 0xe3, 0xe5, 0x18, 0x4b, 0x25, 0x35, 0xa4, 0xb9, 0xf6, 0x12, 0xb6, 0x05, 0xb2, 0x0c, - 0x23, 0xf2, 0x25, 0xc3, 0x7f, 0x3a, 0x8d, 0xd1, 0x43, 0xa8, 0x2c, 0x0e, 0xb4, 0xc2, 0x0f, 0xf4, - 0x42, 0xc0, 0x00, 0x4b, 0x40, 0xb9, 0xcb, 0x33, 0x28, 0x1b, 0xc9, 0x54, 0xfb, 0x1d, 0xd4, 0x86, - 0x76, 0x14, 0xe3, 0x04, 0xff, 0x1a, 0x50, 0x4a, 0xee, 0x2e, 0x09, 0x6d, 0x72, 0xba, 0x7c, 0xfb, - 0xe5, 0x6e, 0xdd, 0x7e, 0x6f, 0x03, 0x73, 0xb4, 0x0b, 0x45, 0x17, 0x5f, 0x4e, 0xc7, 0xf2, 0xee, - 0x12, 0x13, 0xed, 0x0f, 0x0a, 0xd4, 0xe5, 0xe7, 0xbf, 0x31, 0xa0, 0xcf, 0x5e, 0xbd, 0xf3, 0xf4, - 0xd7, 0xdf, 0xf3, 0x3d, 0x68, 0xb6, 0x5f, 0xdb, 0xc1, 0x18, 0x8b, 0x3a, 0x0f, 0x42, 0x8e, 0x96, - 0x49, 0x41, 0x8e, 0x60, 0x47, 0x2e, 0x9b, 0x08, 0x85, 0xf5, 0xeb, 0x98, 0x04, 0xb2, 0x38, 0xdb, - 0x4e, 0xda, 0xe5, 0xa7, 0x31, 0x09, 0xb4, 0x5f, 0xc1, 0x7d, 0xd9, 0x31, 0x32, 0x5e, 0xea, 0x66, - 0x49, 0x5d, 0x93, 0x7c, 0x9c, 0x2d, 0x59, 0x6e, 0x5d, 0xc9, 0xf2, 0xe9, 0x92, 0xbd, 0x80, 0xbd, - 0xe5, 0xf8, 0xb2, 0x74, 0xb7, 0xd9, 0x87, 0xb2, 0x82, 0x7d, 0x68, 0xaf, 0xe0, 0xfe, 0x88, 0x23, - 0x51, 0x02, 0x10, 0xa9, 0xcb, 0x7c, 0xcc, 0xb0, 0xc2, 0x5a, 0xc0, 0x5b, 0x99, 0x0b, 0x4c, 0x7b, - 0xcc, 0xa0, 0x80, 0x48, 0x7b, 0xae, 0x97, 0x50, 0x90, 0xc8, 0x4c, 0x7b, 0xac, 0x7d, 0x17, 0xb6, - 0x2e, 0x04, 0x74, 0x7e, 0x95, 0x88, 0xda, 0xef, 0x61, 0x3f, 0x59, 0x08, 0xeb, 0xf6, 0x6c, 0xb1, - 0x1e, 0x43, 0xd5, 0xf7, 0x1c, 0xcc, 0xba, 0x20, 0x05, 0x1f, 0x52, 0xc4, 0x8e, 0x6e, 0x16, 0xb9, - 0x72, 0x77, 0x21, 0x57, 0xfe, 0x36, 0x72, 0x7d, 0x06, 0x0f, 0x47, 0x98, 0xa6, 0x4e, 0x92, 0x2e, - 0x8e, 0x44, 0x92, 0xc2, 0x23, 0x00, 0x2f, 0xb6, 0x92, 0x63, 0x23, 0x8f, 0x94, 0x17, 0x4b, 0x2b, - 0xed, 0xb7, 0x00, 0x3d, 0x32, 0x96, 0xb4, 0x12, 0x1d, 0x42, 0xd1, 0xc7, 0x37, 0xd8, 0x97, 0xed, - 0xba, 0x9b, 0x6e, 0xd7, 0x1e, 0x19, 0xf7, 0x98, 0xce, 0x10, 0x26, 0xe8, 0xc3, 0xd4, 0x75, 0xb1, - 0x75, 0xbc, 0xb3, 0x64, 0xca, 0x19, 0xaa, 0xb8, 0x43, 0xd6, 0xb7, 0x6c, 0x1d, 0xaa, 0x23, 0x4a, - 0x12, 0x1a, 0xa6, 0xfd, 0x5d, 0x01, 0x64, 0x4e, 0x83, 0x00, 0xfb, 0x19, 0xbe, 0x8a, 0xa0, 0xc0, - 0x61, 0x52, 0xe4, 0xce, 0xc7, 0xac, 0xb0, 0x82, 0x15, 0x5a, 0x21, 0x89, 0x68, 0xc2, 0x38, 0x84, - 0x68, 0x48, 0x22, 0xca, 0x2a, 0x17, 0xd3, 0xc8, 0x73, 0xa8, 0xc5, 0x48, 0x08, 0x96, 0xcd, 0x57, - 0x15, 0x32, 0x83, 0x89, 0xd0, 0x0f, 0xa0, 0x81, 0x03, 0x37, 0x24, 0x1e, 0x2b, 0x7e, 0xe0, 0xe2, - 0x10, 0x07, 0x2e, 0x03, 0xd1, 0xc0, 0x4e, 0xa8, 0xe9, 0x5e, 0xa2, 0xef, 0x2e, 0xd4, 0x7d, 0x9b, - 0xb2, 0x96, 0x8e, 0xa9, 0xed, 0x5c, 0x4b, 0xb0, 0x15, 0x13, 0xed, 0x10, 0xb6, 0x44, 0xf6, 0x77, - 0x13, 0xac, 0x43, 0x0d, 0x6a, 0xe9, 0xe3, 0x8f, 0x36, 0x21, 0x37, 0x78, 0xa9, 0x6e, 0x20, 0x80, - 0xcd, 0xd3, 0x56, 0xb7, 0xa7, 0x77, 0x54, 0xe5, 0xb0, 0x05, 0x95, 0xf9, 0x33, 0x01, 0x55, 0xa1, - 0x34, 0x32, 0x07, 0xc3, 0xa1, 0xde, 0x51, 0x37, 0x50, 0x0d, 0xca, 0x23, 0xb3, 0x65, 0x98, 0xdd, - 0xfe, 0x99, 0xaa, 0x08, 0x55, 0xcb, 0x30, 0xf5, 0x8e, 0x9a, 0x13, 0xaa, 0xc1, 0x70, 0xc8, 0x54, - 0xf9, 0xc3, 0x7f, 0xe6, 0xa0, 0x9a, 0x7a, 0x32, 0xa0, 0x0a, 0x14, 0xf5, 0xf3, 0xa1, 0xf9, 0x85, - 0xba, 0x81, 0xde, 0x81, 0x1d, 0x3e, 0xb4, 0xda, 0x83, 0xfe, 0x69, 0xf7, 0xec, 0xc2, 0x68, 0x99, - 0xdd, 0x41, 0x5f, 0x55, 0x50, 0x03, 0x76, 0x79, 0x38, 0xab, 0x3d, 0x38, 0x3f, 0x6f, 0xf5, 0x3b, - 0xd6, 0x48, 0x37, 0x7e, 0xa6, 0x1b, 0x6a, 0x0e, 0x21, 0xd8, 0x6a, 0x1b, 0x7a, 0xcb, 0xd4, 0xb9, - 0xa8, 0xdb, 0xd6, 0xd5, 0x3c, 0xda, 0x86, 0xba, 0xb0, 0x4e, 0x44, 0x05, 0xb4, 0x0b, 0xea, 0x45, - 0x5f, 0xff, 0xf9, 0x50, 0x6f, 0x9b, 0x7a, 0xc7, 0xd2, 0x0d, 0x63, 0x60, 0xa8, 0x45, 0xb4, 0x03, - 0xf7, 0x5a, 0x3d, 0x43, 0x6f, 0x75, 0xbe, 0xb0, 0x92, 0x6c, 0x37, 0xb3, 0x42, 0xb1, 0xba, 0x12, - 0xda, 0x03, 0xd4, 0xed, 0x8f, 0xcc, 0x56, 0xbf, 0xad, 0x5b, 0xfd, 0x81, 0x69, 0x9d, 0x0e, 0x2e, - 0xfa, 0x1d, 0xb5, 0xcc, 0x12, 0xcb, 0xc8, 0x13, 0x8f, 0xca, 0x0a, 0x8d, 0xf8, 0x00, 0xa0, 0x7d, - 0xb8, 0xcf, 0x13, 0xb0, 0x4e, 0x2e, 0xba, 0xbd, 0x4e, 0xb7, 0x7f, 0x26, 0x97, 0xab, 0x56, 0x99, - 0x93, 0x50, 0x0d, 0x5b, 0xc6, 0x28, 0xa5, 0xa9, 0x2d, 0x34, 0x2c, 0xb3, 0x94, 0xa6, 0x7e, 0x78, - 0x02, 0xe5, 0xe4, 0x18, 0xb0, 0x5a, 0x76, 0xf4, 0x93, 0x8b, 0x33, 0x75, 0x03, 0x95, 0xa1, 0xd0, - 0xed, 0x9f, 0x0e, 0xc4, 0x5e, 0xbc, 0x6a, 0x19, 0x7d, 0x56, 0xfd, 0x1c, 0xaf, 0x36, 0x5f, 0x7d, - 0x9e, 0x0d, 0x4f, 0x5b, 0x66, 0xab, 0xa7, 0x16, 0x0e, 0x3f, 0x82, 0x92, 0x3c, 0x1f, 0xcc, 0xaf, - 0x3d, 0x30, 0x74, 0x75, 0x83, 0xef, 0xa1, 0x2c, 0xa0, 0xc2, 0x9a, 0x40, 0x7e, 0x31, 0x77, 0xfc, - 0x17, 0x05, 0x8a, 0x9c, 0xb5, 0xa3, 0x17, 0x50, 0x1e, 0xd9, 0x33, 0x31, 0xce, 0xdc, 0x23, 0x69, - 0xe2, 0xdf, 0xdc, 0x5f, 0xa1, 0x91, 0xdd, 0xd8, 0x85, 0xad, 0x24, 0xc0, 0x88, 0x46, 0xd8, 0x9e, - 0x7c, 0xad, 0x30, 0x07, 0xca, 0xc7, 0xca, 0xf1, 0xbf, 0x2b, 0x50, 0x60, 0xbd, 0x89, 0x5e, 0x40, - 0x51, 0xbc, 0xdc, 0x32, 0xa1, 0xd2, 0xc7, 0xb7, 0xf9, 0x70, 0xf9, 0xdd, 0x9b, 0x79, 0x29, 0x9f, - 0x2f, 0x5e, 0xcf, 0x8c, 0x0a, 0x32, 0x24, 0x45, 0xef, 0x64, 0x63, 0xcd, 0x01, 0xe2, 0xed, 0xa1, - 0x58, 0x62, 0xe8, 0xe5, 0x82, 0xe6, 0xc6, 0xfc, 0xc5, 0xb2, 0x36, 0xd6, 0x7a, 0xba, 0xca, 0xf2, - 0xe0, 0xc1, 0x06, 0xb0, 0x7d, 0x6e, 0x7b, 0xc1, 0x37, 0x17, 0xb0, 0x03, 0xf5, 0xb3, 0x04, 0xab, - 0xdf, 0x1e, 0x6c, 0x2f, 0xa3, 0x98, 0x3b, 0xf0, 0x28, 0xcf, 0xa1, 0xc8, 0x5f, 0xaf, 0x4b, 0x35, - 0x4f, 0x3d, 0x68, 0x9b, 0xbb, 0xab, 0x78, 0x06, 0xfa, 0x09, 0x14, 0x39, 0x4b, 0xc9, 0x3a, 0xa6, - 0x79, 0x53, 0x76, 0xdf, 0xb3, 0x94, 0xe6, 0x97, 0xb0, 0xb3, 0x82, 0x5f, 0xa0, 0x0f, 0x32, 0x7b, - 0xb2, 0x96, 0x80, 0xdc, 0xd1, 0x06, 0xa7, 0xf2, 0x1f, 0x05, 0x7b, 0xcc, 0x7b, 0x0e, 0xfe, 0xda, - 0xed, 0xf4, 0x1c, 0x0a, 0xac, 0x8c, 0x68, 0x3b, 0x6d, 0xc5, 0x9f, 0xb2, 0x77, 0x38, 0xb6, 0xa0, - 0x64, 0xe0, 0xf8, 0xff, 0x6a, 0x65, 0x76, 0xbe, 0x32, 0x8c, 0x04, 0xbd, 0x97, 0xdd, 0xa0, 0x15, - 0x6c, 0x65, 0xcd, 0x4e, 0xfd, 0x18, 0x4a, 0x92, 0x83, 0xa0, 0x66, 0xda, 0x20, 0x4b, 0x4c, 0xd6, - 0x38, 0x5b, 0x80, 0x6e, 0x33, 0x12, 0xf4, 0x7e, 0xda, 0x76, 0x2d, 0x63, 0x69, 0x6a, 0xcb, 0xf4, - 0x7d, 0xc5, 0xbb, 0xe1, 0x73, 0xd8, 0x3d, 0xcb, 0x50, 0x0e, 0x49, 0xde, 0x57, 0x14, 0xfd, 0xd1, - 0xed, 0x3e, 0x4e, 0x7b, 0x70, 0x12, 0xb7, 0x82, 0xbc, 0xa0, 0x83, 0xa5, 0xd6, 0x5e, 0xcb, 0x6f, - 0xd6, 0xd4, 0xe0, 0x04, 0xaa, 0x0c, 0xa8, 0xef, 0x44, 0x94, 0xbd, 0x25, 0xda, 0x22, 0x2f, 0x4b, - 0x0e, 0x72, 0xff, 0x51, 0xa0, 0x2e, 0xe9, 0x88, 0xec, 0xca, 0x76, 0x82, 0x76, 0xef, 0xa6, 0xdd, - 0x6e, 0x53, 0x96, 0x66, 0xf3, 0xb6, 0x7e, 0x9e, 0xda, 0xf7, 0xd7, 0xb7, 0xe8, 0xdb, 0xdc, 0x9e, - 0xc3, 0xe6, 0xfa, 0x32, 0xdf, 0xf1, 0x3d, 0xfd, 0x4b, 0x8f, 0xfe, 0x8f, 0x6e, 0x27, 0x5b, 0xbf, - 0xa8, 0x1d, 0x3d, 0x5d, 0xa8, 0x2f, 0x37, 0xf9, 0xaf, 0xcf, 0x4f, 0xfe, 0x1b, 0x00, 0x00, 0xff, - 0xff, 0xc8, 0xaf, 0x1d, 0x85, 0x16, 0x15, 0x00, 0x00, +func file_hiddify_proto_rawDescGZIP() []byte { + file_hiddify_proto_rawDescOnce.Do(func() { + file_hiddify_proto_rawDescData = protoimpl.X.CompressGZIP(file_hiddify_proto_rawDescData) + }) + return file_hiddify_proto_rawDescData +} + +var file_hiddify_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_hiddify_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_hiddify_proto_goTypes = []any{ + (CoreState)(0), // 0: hiddifyrpc.CoreState + (MessageType)(0), // 1: hiddifyrpc.MessageType + (LogLevel)(0), // 2: hiddifyrpc.LogLevel + (LogType)(0), // 3: hiddifyrpc.LogType + (*CoreInfoResponse)(nil), // 4: hiddifyrpc.CoreInfoResponse + (*StartRequest)(nil), // 5: hiddifyrpc.StartRequest + (*SetupRequest)(nil), // 6: hiddifyrpc.SetupRequest + (*Response)(nil), // 7: hiddifyrpc.Response + (*SystemInfo)(nil), // 8: hiddifyrpc.SystemInfo + (*OutboundGroupItem)(nil), // 9: hiddifyrpc.OutboundGroupItem + (*OutboundGroup)(nil), // 10: hiddifyrpc.OutboundGroup + (*OutboundGroupList)(nil), // 11: hiddifyrpc.OutboundGroupList + (*WarpAccount)(nil), // 12: hiddifyrpc.WarpAccount + (*WarpWireguardConfig)(nil), // 13: hiddifyrpc.WarpWireguardConfig + (*WarpGenerationResponse)(nil), // 14: hiddifyrpc.WarpGenerationResponse + (*SystemProxyStatus)(nil), // 15: hiddifyrpc.SystemProxyStatus + (*ParseRequest)(nil), // 16: hiddifyrpc.ParseRequest + (*ParseResponse)(nil), // 17: hiddifyrpc.ParseResponse + (*ChangeConfigOptionsRequest)(nil), // 18: hiddifyrpc.ChangeConfigOptionsRequest + (*GenerateConfigRequest)(nil), // 19: hiddifyrpc.GenerateConfigRequest + (*GenerateConfigResponse)(nil), // 20: hiddifyrpc.GenerateConfigResponse + (*SelectOutboundRequest)(nil), // 21: hiddifyrpc.SelectOutboundRequest + (*UrlTestRequest)(nil), // 22: hiddifyrpc.UrlTestRequest + (*GenerateWarpConfigRequest)(nil), // 23: hiddifyrpc.GenerateWarpConfigRequest + (*SetSystemProxyEnabledRequest)(nil), // 24: hiddifyrpc.SetSystemProxyEnabledRequest + (*LogMessage)(nil), // 25: hiddifyrpc.LogMessage + (*StopRequest)(nil), // 26: hiddifyrpc.StopRequest + (*TunnelStartRequest)(nil), // 27: hiddifyrpc.TunnelStartRequest + (*TunnelResponse)(nil), // 28: hiddifyrpc.TunnelResponse + (ResponseCode)(0), // 29: hiddifyrpc.ResponseCode + (*HelloRequest)(nil), // 30: hiddifyrpc.HelloRequest + (*Empty)(nil), // 31: hiddifyrpc.Empty + (*HelloResponse)(nil), // 32: hiddifyrpc.HelloResponse +} +var file_hiddify_proto_depIdxs = []int32{ + 0, // 0: hiddifyrpc.CoreInfoResponse.core_state:type_name -> hiddifyrpc.CoreState + 1, // 1: hiddifyrpc.CoreInfoResponse.message_type:type_name -> hiddifyrpc.MessageType + 29, // 2: hiddifyrpc.Response.response_code:type_name -> hiddifyrpc.ResponseCode + 9, // 3: hiddifyrpc.OutboundGroup.items:type_name -> hiddifyrpc.OutboundGroupItem + 10, // 4: hiddifyrpc.OutboundGroupList.items:type_name -> hiddifyrpc.OutboundGroup + 12, // 5: hiddifyrpc.WarpGenerationResponse.account:type_name -> hiddifyrpc.WarpAccount + 13, // 6: hiddifyrpc.WarpGenerationResponse.config:type_name -> hiddifyrpc.WarpWireguardConfig + 29, // 7: hiddifyrpc.ParseResponse.response_code:type_name -> hiddifyrpc.ResponseCode + 2, // 8: hiddifyrpc.LogMessage.level:type_name -> hiddifyrpc.LogLevel + 3, // 9: hiddifyrpc.LogMessage.type:type_name -> hiddifyrpc.LogType + 30, // 10: hiddifyrpc.Hello.SayHello:input_type -> hiddifyrpc.HelloRequest + 30, // 11: hiddifyrpc.Hello.SayHelloStream:input_type -> hiddifyrpc.HelloRequest + 5, // 12: hiddifyrpc.Core.Start:input_type -> hiddifyrpc.StartRequest + 26, // 13: hiddifyrpc.Core.CoreInfoListener:input_type -> hiddifyrpc.StopRequest + 26, // 14: hiddifyrpc.Core.OutboundsInfo:input_type -> hiddifyrpc.StopRequest + 26, // 15: hiddifyrpc.Core.MainOutboundsInfo:input_type -> hiddifyrpc.StopRequest + 26, // 16: hiddifyrpc.Core.GetSystemInfo:input_type -> hiddifyrpc.StopRequest + 6, // 17: hiddifyrpc.Core.Setup:input_type -> hiddifyrpc.SetupRequest + 16, // 18: hiddifyrpc.Core.Parse:input_type -> hiddifyrpc.ParseRequest + 18, // 19: hiddifyrpc.Core.ChangeConfigOptions:input_type -> hiddifyrpc.ChangeConfigOptionsRequest + 5, // 20: hiddifyrpc.Core.StartService:input_type -> hiddifyrpc.StartRequest + 31, // 21: hiddifyrpc.Core.Stop:input_type -> hiddifyrpc.Empty + 5, // 22: hiddifyrpc.Core.Restart:input_type -> hiddifyrpc.StartRequest + 21, // 23: hiddifyrpc.Core.SelectOutbound:input_type -> hiddifyrpc.SelectOutboundRequest + 22, // 24: hiddifyrpc.Core.UrlTest:input_type -> hiddifyrpc.UrlTestRequest + 23, // 25: hiddifyrpc.Core.GenerateWarpConfig:input_type -> hiddifyrpc.GenerateWarpConfigRequest + 31, // 26: hiddifyrpc.Core.GetSystemProxyStatus:input_type -> hiddifyrpc.Empty + 24, // 27: hiddifyrpc.Core.SetSystemProxyEnabled:input_type -> hiddifyrpc.SetSystemProxyEnabledRequest + 26, // 28: hiddifyrpc.Core.LogListener:input_type -> hiddifyrpc.StopRequest + 27, // 29: hiddifyrpc.TunnelService.Start:input_type -> hiddifyrpc.TunnelStartRequest + 31, // 30: hiddifyrpc.TunnelService.Stop:input_type -> hiddifyrpc.Empty + 31, // 31: hiddifyrpc.TunnelService.Status:input_type -> hiddifyrpc.Empty + 31, // 32: hiddifyrpc.TunnelService.Exit:input_type -> hiddifyrpc.Empty + 32, // 33: hiddifyrpc.Hello.SayHello:output_type -> hiddifyrpc.HelloResponse + 32, // 34: hiddifyrpc.Hello.SayHelloStream:output_type -> hiddifyrpc.HelloResponse + 4, // 35: hiddifyrpc.Core.Start:output_type -> hiddifyrpc.CoreInfoResponse + 4, // 36: hiddifyrpc.Core.CoreInfoListener:output_type -> hiddifyrpc.CoreInfoResponse + 11, // 37: hiddifyrpc.Core.OutboundsInfo:output_type -> hiddifyrpc.OutboundGroupList + 11, // 38: hiddifyrpc.Core.MainOutboundsInfo:output_type -> hiddifyrpc.OutboundGroupList + 8, // 39: hiddifyrpc.Core.GetSystemInfo:output_type -> hiddifyrpc.SystemInfo + 7, // 40: hiddifyrpc.Core.Setup:output_type -> hiddifyrpc.Response + 17, // 41: hiddifyrpc.Core.Parse:output_type -> hiddifyrpc.ParseResponse + 4, // 42: hiddifyrpc.Core.ChangeConfigOptions:output_type -> hiddifyrpc.CoreInfoResponse + 4, // 43: hiddifyrpc.Core.StartService:output_type -> hiddifyrpc.CoreInfoResponse + 4, // 44: hiddifyrpc.Core.Stop:output_type -> hiddifyrpc.CoreInfoResponse + 4, // 45: hiddifyrpc.Core.Restart:output_type -> hiddifyrpc.CoreInfoResponse + 7, // 46: hiddifyrpc.Core.SelectOutbound:output_type -> hiddifyrpc.Response + 7, // 47: hiddifyrpc.Core.UrlTest:output_type -> hiddifyrpc.Response + 14, // 48: hiddifyrpc.Core.GenerateWarpConfig:output_type -> hiddifyrpc.WarpGenerationResponse + 15, // 49: hiddifyrpc.Core.GetSystemProxyStatus:output_type -> hiddifyrpc.SystemProxyStatus + 7, // 50: hiddifyrpc.Core.SetSystemProxyEnabled:output_type -> hiddifyrpc.Response + 25, // 51: hiddifyrpc.Core.LogListener:output_type -> hiddifyrpc.LogMessage + 28, // 52: hiddifyrpc.TunnelService.Start:output_type -> hiddifyrpc.TunnelResponse + 28, // 53: hiddifyrpc.TunnelService.Stop:output_type -> hiddifyrpc.TunnelResponse + 28, // 54: hiddifyrpc.TunnelService.Status:output_type -> hiddifyrpc.TunnelResponse + 28, // 55: hiddifyrpc.TunnelService.Exit:output_type -> hiddifyrpc.TunnelResponse + 33, // [33:56] is the sub-list for method output_type + 10, // [10:33] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_hiddify_proto_init() } +func file_hiddify_proto_init() { + if File_hiddify_proto != nil { + return + } + file_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_hiddify_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*CoreInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*StartRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*SetupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Response); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*SystemInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*OutboundGroupItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*OutboundGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*OutboundGroupList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*WarpAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*WarpWireguardConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*WarpGenerationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*SystemProxyStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*ParseRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*ParseResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*ChangeConfigOptionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*GenerateConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*GenerateConfigResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*SelectOutboundRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*UrlTestRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*GenerateWarpConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*SetSystemProxyEnabledRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*LogMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*StopRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*TunnelStartRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_hiddify_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*TunnelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_hiddify_proto_rawDesc, + NumEnums: 4, + NumMessages: 25, + NumExtensions: 0, + NumServices: 3, + }, + GoTypes: file_hiddify_proto_goTypes, + DependencyIndexes: file_hiddify_proto_depIdxs, + EnumInfos: file_hiddify_proto_enumTypes, + MessageInfos: file_hiddify_proto_msgTypes, + }.Build() + File_hiddify_proto = out.File + file_hiddify_proto_rawDesc = nil + file_hiddify_proto_goTypes = nil + file_hiddify_proto_depIdxs = nil } diff --git a/hiddifyrpc/hiddify.proto b/hiddifyrpc/hiddify.proto index aed27df..b4fc98f 100644 --- a/hiddifyrpc/hiddify.proto +++ b/hiddifyrpc/hiddify.proto @@ -1,13 +1,9 @@ syntax = "proto3"; - +import "base.proto"; package hiddifyrpc; option go_package = "./hiddifyrpc"; -enum ResponseCode { - OK = 0; - FAILED = 1; -} enum CoreState { STOPPED = 0; @@ -60,17 +56,6 @@ message Response { } -message HelloRequest { - string name = 1; -} - -message HelloResponse { - string message = 1; -} - -message Empty { -} - message SystemInfo { int64 memory = 1; int32 goroutines = 2; diff --git a/hiddifyrpc/hiddify_grpc.pb.go b/hiddifyrpc/hiddify_grpc.pb.go index 6d88bdc..abd4fd1 100644 --- a/hiddifyrpc/hiddify_grpc.pb.go +++ b/hiddifyrpc/hiddify_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.6.1 -// source: hiddifyrpc/hiddify.proto +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.28.0 +// source: hiddify.proto package hiddifyrpc @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Hello_SayHello_FullMethodName = "/hiddifyrpc.Hello/SayHello" @@ -28,7 +28,7 @@ const ( // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type HelloClient interface { SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloResponse, error) - SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (Hello_SayHelloStreamClient, error) + SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[HelloRequest, HelloResponse], error) } type helloClient struct { @@ -40,65 +40,52 @@ func NewHelloClient(cc grpc.ClientConnInterface) HelloClient { } func (c *helloClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HelloResponse) - err := c.cc.Invoke(ctx, Hello_SayHello_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Hello_SayHello_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *helloClient) SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (Hello_SayHelloStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &Hello_ServiceDesc.Streams[0], Hello_SayHelloStream_FullMethodName, opts...) +func (c *helloClient) SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[HelloRequest, HelloResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Hello_ServiceDesc.Streams[0], Hello_SayHelloStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &helloSayHelloStreamClient{stream} + x := &grpc.GenericClientStream[HelloRequest, HelloResponse]{ClientStream: stream} return x, nil } -type Hello_SayHelloStreamClient interface { - Send(*HelloRequest) error - Recv() (*HelloResponse, error) - grpc.ClientStream -} - -type helloSayHelloStreamClient struct { - grpc.ClientStream -} - -func (x *helloSayHelloStreamClient) Send(m *HelloRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *helloSayHelloStreamClient) Recv() (*HelloResponse, error) { - m := new(HelloResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Hello_SayHelloStreamClient = grpc.BidiStreamingClient[HelloRequest, HelloResponse] // HelloServer is the server API for Hello service. // All implementations must embed UnimplementedHelloServer -// for forward compatibility +// for forward compatibility. type HelloServer interface { SayHello(context.Context, *HelloRequest) (*HelloResponse, error) - SayHelloStream(Hello_SayHelloStreamServer) error + SayHelloStream(grpc.BidiStreamingServer[HelloRequest, HelloResponse]) error mustEmbedUnimplementedHelloServer() } -// UnimplementedHelloServer must be embedded to have forward compatible implementations. -type UnimplementedHelloServer struct { -} +// UnimplementedHelloServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedHelloServer struct{} func (UnimplementedHelloServer) SayHello(context.Context, *HelloRequest) (*HelloResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented") } -func (UnimplementedHelloServer) SayHelloStream(Hello_SayHelloStreamServer) error { +func (UnimplementedHelloServer) SayHelloStream(grpc.BidiStreamingServer[HelloRequest, HelloResponse]) error { return status.Errorf(codes.Unimplemented, "method SayHelloStream not implemented") } func (UnimplementedHelloServer) mustEmbedUnimplementedHelloServer() {} +func (UnimplementedHelloServer) testEmbeddedByValue() {} // UnsafeHelloServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to HelloServer will @@ -108,6 +95,13 @@ type UnsafeHelloServer interface { } func RegisterHelloServer(s grpc.ServiceRegistrar, srv HelloServer) { + // If the following call pancis, it indicates UnimplementedHelloServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Hello_ServiceDesc, srv) } @@ -130,30 +124,11 @@ func _Hello_SayHello_Handler(srv interface{}, ctx context.Context, dec func(inte } func _Hello_SayHelloStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(HelloServer).SayHelloStream(&helloSayHelloStreamServer{stream}) + return srv.(HelloServer).SayHelloStream(&grpc.GenericServerStream[HelloRequest, HelloResponse]{ServerStream: stream}) } -type Hello_SayHelloStreamServer interface { - Send(*HelloResponse) error - Recv() (*HelloRequest, error) - grpc.ServerStream -} - -type helloSayHelloStreamServer struct { - grpc.ServerStream -} - -func (x *helloSayHelloStreamServer) Send(m *HelloResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *helloSayHelloStreamServer) Recv() (*HelloRequest, error) { - m := new(HelloRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Hello_SayHelloStreamServer = grpc.BidiStreamingServer[HelloRequest, HelloResponse] // Hello_ServiceDesc is the grpc.ServiceDesc for Hello service. // It's only intended for direct use with grpc.RegisterService, @@ -175,7 +150,7 @@ var Hello_ServiceDesc = grpc.ServiceDesc{ ClientStreams: true, }, }, - Metadata: "hiddifyrpc/hiddify.proto", + Metadata: "hiddify.proto", } const ( @@ -203,10 +178,10 @@ const ( // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type CoreClient interface { Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*CoreInfoResponse, error) - CoreInfoListener(ctx context.Context, opts ...grpc.CallOption) (Core_CoreInfoListenerClient, error) - OutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (Core_OutboundsInfoClient, error) - MainOutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (Core_MainOutboundsInfoClient, error) - GetSystemInfo(ctx context.Context, opts ...grpc.CallOption) (Core_GetSystemInfoClient, error) + CoreInfoListener(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, CoreInfoResponse], error) + OutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, OutboundGroupList], error) + MainOutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, OutboundGroupList], error) + GetSystemInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, SystemInfo], error) Setup(ctx context.Context, in *SetupRequest, opts ...grpc.CallOption) (*Response, error) Parse(ctx context.Context, in *ParseRequest, opts ...grpc.CallOption) (*ParseResponse, error) ChangeConfigOptions(ctx context.Context, in *ChangeConfigOptionsRequest, opts ...grpc.CallOption) (*CoreInfoResponse, error) @@ -219,7 +194,7 @@ type CoreClient interface { GenerateWarpConfig(ctx context.Context, in *GenerateWarpConfigRequest, opts ...grpc.CallOption) (*WarpGenerationResponse, error) GetSystemProxyStatus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemProxyStatus, error) SetSystemProxyEnabled(ctx context.Context, in *SetSystemProxyEnabledRequest, opts ...grpc.CallOption) (*Response, error) - LogListener(ctx context.Context, opts ...grpc.CallOption) (Core_LogListenerClient, error) + LogListener(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, LogMessage], error) } type coreClient struct { @@ -231,141 +206,71 @@ func NewCoreClient(cc grpc.ClientConnInterface) CoreClient { } func (c *coreClient) Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*CoreInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CoreInfoResponse) - err := c.cc.Invoke(ctx, Core_Start_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_Start_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *coreClient) CoreInfoListener(ctx context.Context, opts ...grpc.CallOption) (Core_CoreInfoListenerClient, error) { - stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[0], Core_CoreInfoListener_FullMethodName, opts...) +func (c *coreClient) CoreInfoListener(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, CoreInfoResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[0], Core_CoreInfoListener_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &coreCoreInfoListenerClient{stream} + x := &grpc.GenericClientStream[StopRequest, CoreInfoResponse]{ClientStream: stream} return x, nil } -type Core_CoreInfoListenerClient interface { - Send(*StopRequest) error - Recv() (*CoreInfoResponse, error) - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_CoreInfoListenerClient = grpc.BidiStreamingClient[StopRequest, CoreInfoResponse] -type coreCoreInfoListenerClient struct { - grpc.ClientStream -} - -func (x *coreCoreInfoListenerClient) Send(m *StopRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *coreCoreInfoListenerClient) Recv() (*CoreInfoResponse, error) { - m := new(CoreInfoResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *coreClient) OutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (Core_OutboundsInfoClient, error) { - stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[1], Core_OutboundsInfo_FullMethodName, opts...) +func (c *coreClient) OutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, OutboundGroupList], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[1], Core_OutboundsInfo_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &coreOutboundsInfoClient{stream} + x := &grpc.GenericClientStream[StopRequest, OutboundGroupList]{ClientStream: stream} return x, nil } -type Core_OutboundsInfoClient interface { - Send(*StopRequest) error - Recv() (*OutboundGroupList, error) - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_OutboundsInfoClient = grpc.BidiStreamingClient[StopRequest, OutboundGroupList] -type coreOutboundsInfoClient struct { - grpc.ClientStream -} - -func (x *coreOutboundsInfoClient) Send(m *StopRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *coreOutboundsInfoClient) Recv() (*OutboundGroupList, error) { - m := new(OutboundGroupList) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *coreClient) MainOutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (Core_MainOutboundsInfoClient, error) { - stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[2], Core_MainOutboundsInfo_FullMethodName, opts...) +func (c *coreClient) MainOutboundsInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, OutboundGroupList], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[2], Core_MainOutboundsInfo_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &coreMainOutboundsInfoClient{stream} + x := &grpc.GenericClientStream[StopRequest, OutboundGroupList]{ClientStream: stream} return x, nil } -type Core_MainOutboundsInfoClient interface { - Send(*StopRequest) error - Recv() (*OutboundGroupList, error) - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_MainOutboundsInfoClient = grpc.BidiStreamingClient[StopRequest, OutboundGroupList] -type coreMainOutboundsInfoClient struct { - grpc.ClientStream -} - -func (x *coreMainOutboundsInfoClient) Send(m *StopRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *coreMainOutboundsInfoClient) Recv() (*OutboundGroupList, error) { - m := new(OutboundGroupList) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *coreClient) GetSystemInfo(ctx context.Context, opts ...grpc.CallOption) (Core_GetSystemInfoClient, error) { - stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[3], Core_GetSystemInfo_FullMethodName, opts...) +func (c *coreClient) GetSystemInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, SystemInfo], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[3], Core_GetSystemInfo_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &coreGetSystemInfoClient{stream} + x := &grpc.GenericClientStream[StopRequest, SystemInfo]{ClientStream: stream} return x, nil } -type Core_GetSystemInfoClient interface { - Send(*StopRequest) error - Recv() (*SystemInfo, error) - grpc.ClientStream -} - -type coreGetSystemInfoClient struct { - grpc.ClientStream -} - -func (x *coreGetSystemInfoClient) Send(m *StopRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *coreGetSystemInfoClient) Recv() (*SystemInfo, error) { - m := new(SystemInfo) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_GetSystemInfoClient = grpc.BidiStreamingClient[StopRequest, SystemInfo] func (c *coreClient) Setup(ctx context.Context, in *SetupRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) - err := c.cc.Invoke(ctx, Core_Setup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_Setup_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -373,8 +278,9 @@ func (c *coreClient) Setup(ctx context.Context, in *SetupRequest, opts ...grpc.C } func (c *coreClient) Parse(ctx context.Context, in *ParseRequest, opts ...grpc.CallOption) (*ParseResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ParseResponse) - err := c.cc.Invoke(ctx, Core_Parse_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_Parse_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -382,8 +288,9 @@ func (c *coreClient) Parse(ctx context.Context, in *ParseRequest, opts ...grpc.C } func (c *coreClient) ChangeConfigOptions(ctx context.Context, in *ChangeConfigOptionsRequest, opts ...grpc.CallOption) (*CoreInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CoreInfoResponse) - err := c.cc.Invoke(ctx, Core_ChangeConfigOptions_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_ChangeConfigOptions_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -391,8 +298,9 @@ func (c *coreClient) ChangeConfigOptions(ctx context.Context, in *ChangeConfigOp } func (c *coreClient) StartService(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*CoreInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CoreInfoResponse) - err := c.cc.Invoke(ctx, Core_StartService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_StartService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -400,8 +308,9 @@ func (c *coreClient) StartService(ctx context.Context, in *StartRequest, opts .. } func (c *coreClient) Stop(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*CoreInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CoreInfoResponse) - err := c.cc.Invoke(ctx, Core_Stop_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_Stop_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -409,8 +318,9 @@ func (c *coreClient) Stop(ctx context.Context, in *Empty, opts ...grpc.CallOptio } func (c *coreClient) Restart(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*CoreInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CoreInfoResponse) - err := c.cc.Invoke(ctx, Core_Restart_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_Restart_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -418,8 +328,9 @@ func (c *coreClient) Restart(ctx context.Context, in *StartRequest, opts ...grpc } func (c *coreClient) SelectOutbound(ctx context.Context, in *SelectOutboundRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) - err := c.cc.Invoke(ctx, Core_SelectOutbound_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_SelectOutbound_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -427,8 +338,9 @@ func (c *coreClient) SelectOutbound(ctx context.Context, in *SelectOutboundReque } func (c *coreClient) UrlTest(ctx context.Context, in *UrlTestRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) - err := c.cc.Invoke(ctx, Core_UrlTest_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_UrlTest_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -436,8 +348,9 @@ func (c *coreClient) UrlTest(ctx context.Context, in *UrlTestRequest, opts ...gr } func (c *coreClient) GenerateWarpConfig(ctx context.Context, in *GenerateWarpConfigRequest, opts ...grpc.CallOption) (*WarpGenerationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(WarpGenerationResponse) - err := c.cc.Invoke(ctx, Core_GenerateWarpConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_GenerateWarpConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -445,8 +358,9 @@ func (c *coreClient) GenerateWarpConfig(ctx context.Context, in *GenerateWarpCon } func (c *coreClient) GetSystemProxyStatus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemProxyStatus, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SystemProxyStatus) - err := c.cc.Invoke(ctx, Core_GetSystemProxyStatus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_GetSystemProxyStatus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -454,54 +368,37 @@ func (c *coreClient) GetSystemProxyStatus(ctx context.Context, in *Empty, opts . } func (c *coreClient) SetSystemProxyEnabled(ctx context.Context, in *SetSystemProxyEnabledRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) - err := c.cc.Invoke(ctx, Core_SetSystemProxyEnabled_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Core_SetSystemProxyEnabled_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *coreClient) LogListener(ctx context.Context, opts ...grpc.CallOption) (Core_LogListenerClient, error) { - stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[4], Core_LogListener_FullMethodName, opts...) +func (c *coreClient) LogListener(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[StopRequest, LogMessage], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Core_ServiceDesc.Streams[4], Core_LogListener_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &coreLogListenerClient{stream} + x := &grpc.GenericClientStream[StopRequest, LogMessage]{ClientStream: stream} return x, nil } -type Core_LogListenerClient interface { - Send(*StopRequest) error - Recv() (*LogMessage, error) - grpc.ClientStream -} - -type coreLogListenerClient struct { - grpc.ClientStream -} - -func (x *coreLogListenerClient) Send(m *StopRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *coreLogListenerClient) Recv() (*LogMessage, error) { - m := new(LogMessage) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_LogListenerClient = grpc.BidiStreamingClient[StopRequest, LogMessage] // CoreServer is the server API for Core service. // All implementations must embed UnimplementedCoreServer -// for forward compatibility +// for forward compatibility. type CoreServer interface { Start(context.Context, *StartRequest) (*CoreInfoResponse, error) - CoreInfoListener(Core_CoreInfoListenerServer) error - OutboundsInfo(Core_OutboundsInfoServer) error - MainOutboundsInfo(Core_MainOutboundsInfoServer) error - GetSystemInfo(Core_GetSystemInfoServer) error + CoreInfoListener(grpc.BidiStreamingServer[StopRequest, CoreInfoResponse]) error + OutboundsInfo(grpc.BidiStreamingServer[StopRequest, OutboundGroupList]) error + MainOutboundsInfo(grpc.BidiStreamingServer[StopRequest, OutboundGroupList]) error + GetSystemInfo(grpc.BidiStreamingServer[StopRequest, SystemInfo]) error Setup(context.Context, *SetupRequest) (*Response, error) Parse(context.Context, *ParseRequest) (*ParseResponse, error) ChangeConfigOptions(context.Context, *ChangeConfigOptionsRequest) (*CoreInfoResponse, error) @@ -514,27 +411,30 @@ type CoreServer interface { GenerateWarpConfig(context.Context, *GenerateWarpConfigRequest) (*WarpGenerationResponse, error) GetSystemProxyStatus(context.Context, *Empty) (*SystemProxyStatus, error) SetSystemProxyEnabled(context.Context, *SetSystemProxyEnabledRequest) (*Response, error) - LogListener(Core_LogListenerServer) error + LogListener(grpc.BidiStreamingServer[StopRequest, LogMessage]) error mustEmbedUnimplementedCoreServer() } -// UnimplementedCoreServer must be embedded to have forward compatible implementations. -type UnimplementedCoreServer struct { -} +// UnimplementedCoreServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedCoreServer struct{} func (UnimplementedCoreServer) Start(context.Context, *StartRequest) (*CoreInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") } -func (UnimplementedCoreServer) CoreInfoListener(Core_CoreInfoListenerServer) error { +func (UnimplementedCoreServer) CoreInfoListener(grpc.BidiStreamingServer[StopRequest, CoreInfoResponse]) error { return status.Errorf(codes.Unimplemented, "method CoreInfoListener not implemented") } -func (UnimplementedCoreServer) OutboundsInfo(Core_OutboundsInfoServer) error { +func (UnimplementedCoreServer) OutboundsInfo(grpc.BidiStreamingServer[StopRequest, OutboundGroupList]) error { return status.Errorf(codes.Unimplemented, "method OutboundsInfo not implemented") } -func (UnimplementedCoreServer) MainOutboundsInfo(Core_MainOutboundsInfoServer) error { +func (UnimplementedCoreServer) MainOutboundsInfo(grpc.BidiStreamingServer[StopRequest, OutboundGroupList]) error { return status.Errorf(codes.Unimplemented, "method MainOutboundsInfo not implemented") } -func (UnimplementedCoreServer) GetSystemInfo(Core_GetSystemInfoServer) error { +func (UnimplementedCoreServer) GetSystemInfo(grpc.BidiStreamingServer[StopRequest, SystemInfo]) error { return status.Errorf(codes.Unimplemented, "method GetSystemInfo not implemented") } func (UnimplementedCoreServer) Setup(context.Context, *SetupRequest) (*Response, error) { @@ -570,10 +470,11 @@ func (UnimplementedCoreServer) GetSystemProxyStatus(context.Context, *Empty) (*S func (UnimplementedCoreServer) SetSystemProxyEnabled(context.Context, *SetSystemProxyEnabledRequest) (*Response, error) { return nil, status.Errorf(codes.Unimplemented, "method SetSystemProxyEnabled not implemented") } -func (UnimplementedCoreServer) LogListener(Core_LogListenerServer) error { +func (UnimplementedCoreServer) LogListener(grpc.BidiStreamingServer[StopRequest, LogMessage]) error { return status.Errorf(codes.Unimplemented, "method LogListener not implemented") } func (UnimplementedCoreServer) mustEmbedUnimplementedCoreServer() {} +func (UnimplementedCoreServer) testEmbeddedByValue() {} // UnsafeCoreServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to CoreServer will @@ -583,6 +484,13 @@ type UnsafeCoreServer interface { } func RegisterCoreServer(s grpc.ServiceRegistrar, srv CoreServer) { + // If the following call pancis, it indicates UnimplementedCoreServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Core_ServiceDesc, srv) } @@ -605,108 +513,32 @@ func _Core_Start_Handler(srv interface{}, ctx context.Context, dec func(interfac } func _Core_CoreInfoListener_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(CoreServer).CoreInfoListener(&coreCoreInfoListenerServer{stream}) + return srv.(CoreServer).CoreInfoListener(&grpc.GenericServerStream[StopRequest, CoreInfoResponse]{ServerStream: stream}) } -type Core_CoreInfoListenerServer interface { - Send(*CoreInfoResponse) error - Recv() (*StopRequest, error) - grpc.ServerStream -} - -type coreCoreInfoListenerServer struct { - grpc.ServerStream -} - -func (x *coreCoreInfoListenerServer) Send(m *CoreInfoResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *coreCoreInfoListenerServer) Recv() (*StopRequest, error) { - m := new(StopRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_CoreInfoListenerServer = grpc.BidiStreamingServer[StopRequest, CoreInfoResponse] func _Core_OutboundsInfo_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(CoreServer).OutboundsInfo(&coreOutboundsInfoServer{stream}) + return srv.(CoreServer).OutboundsInfo(&grpc.GenericServerStream[StopRequest, OutboundGroupList]{ServerStream: stream}) } -type Core_OutboundsInfoServer interface { - Send(*OutboundGroupList) error - Recv() (*StopRequest, error) - grpc.ServerStream -} - -type coreOutboundsInfoServer struct { - grpc.ServerStream -} - -func (x *coreOutboundsInfoServer) Send(m *OutboundGroupList) error { - return x.ServerStream.SendMsg(m) -} - -func (x *coreOutboundsInfoServer) Recv() (*StopRequest, error) { - m := new(StopRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_OutboundsInfoServer = grpc.BidiStreamingServer[StopRequest, OutboundGroupList] func _Core_MainOutboundsInfo_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(CoreServer).MainOutboundsInfo(&coreMainOutboundsInfoServer{stream}) + return srv.(CoreServer).MainOutboundsInfo(&grpc.GenericServerStream[StopRequest, OutboundGroupList]{ServerStream: stream}) } -type Core_MainOutboundsInfoServer interface { - Send(*OutboundGroupList) error - Recv() (*StopRequest, error) - grpc.ServerStream -} - -type coreMainOutboundsInfoServer struct { - grpc.ServerStream -} - -func (x *coreMainOutboundsInfoServer) Send(m *OutboundGroupList) error { - return x.ServerStream.SendMsg(m) -} - -func (x *coreMainOutboundsInfoServer) Recv() (*StopRequest, error) { - m := new(StopRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_MainOutboundsInfoServer = grpc.BidiStreamingServer[StopRequest, OutboundGroupList] func _Core_GetSystemInfo_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(CoreServer).GetSystemInfo(&coreGetSystemInfoServer{stream}) + return srv.(CoreServer).GetSystemInfo(&grpc.GenericServerStream[StopRequest, SystemInfo]{ServerStream: stream}) } -type Core_GetSystemInfoServer interface { - Send(*SystemInfo) error - Recv() (*StopRequest, error) - grpc.ServerStream -} - -type coreGetSystemInfoServer struct { - grpc.ServerStream -} - -func (x *coreGetSystemInfoServer) Send(m *SystemInfo) error { - return x.ServerStream.SendMsg(m) -} - -func (x *coreGetSystemInfoServer) Recv() (*StopRequest, error) { - m := new(StopRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_GetSystemInfoServer = grpc.BidiStreamingServer[StopRequest, SystemInfo] func _Core_Setup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetupRequest) @@ -907,30 +739,11 @@ func _Core_SetSystemProxyEnabled_Handler(srv interface{}, ctx context.Context, d } func _Core_LogListener_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(CoreServer).LogListener(&coreLogListenerServer{stream}) + return srv.(CoreServer).LogListener(&grpc.GenericServerStream[StopRequest, LogMessage]{ServerStream: stream}) } -type Core_LogListenerServer interface { - Send(*LogMessage) error - Recv() (*StopRequest, error) - grpc.ServerStream -} - -type coreLogListenerServer struct { - grpc.ServerStream -} - -func (x *coreLogListenerServer) Send(m *LogMessage) error { - return x.ServerStream.SendMsg(m) -} - -func (x *coreLogListenerServer) Recv() (*StopRequest, error) { - m := new(StopRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Core_LogListenerServer = grpc.BidiStreamingServer[StopRequest, LogMessage] // Core_ServiceDesc is the grpc.ServiceDesc for Core service. // It's only intended for direct use with grpc.RegisterService, @@ -1020,7 +833,7 @@ var Core_ServiceDesc = grpc.ServiceDesc{ ClientStreams: true, }, }, - Metadata: "hiddifyrpc/hiddify.proto", + Metadata: "hiddify.proto", } const ( @@ -1049,8 +862,9 @@ func NewTunnelServiceClient(cc grpc.ClientConnInterface) TunnelServiceClient { } func (c *tunnelServiceClient) Start(ctx context.Context, in *TunnelStartRequest, opts ...grpc.CallOption) (*TunnelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TunnelResponse) - err := c.cc.Invoke(ctx, TunnelService_Start_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, TunnelService_Start_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1058,8 +872,9 @@ func (c *tunnelServiceClient) Start(ctx context.Context, in *TunnelStartRequest, } func (c *tunnelServiceClient) Stop(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*TunnelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TunnelResponse) - err := c.cc.Invoke(ctx, TunnelService_Stop_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, TunnelService_Stop_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1067,8 +882,9 @@ func (c *tunnelServiceClient) Stop(ctx context.Context, in *Empty, opts ...grpc. } func (c *tunnelServiceClient) Status(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*TunnelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TunnelResponse) - err := c.cc.Invoke(ctx, TunnelService_Status_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, TunnelService_Status_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1076,8 +892,9 @@ func (c *tunnelServiceClient) Status(ctx context.Context, in *Empty, opts ...grp } func (c *tunnelServiceClient) Exit(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*TunnelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TunnelResponse) - err := c.cc.Invoke(ctx, TunnelService_Exit_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, TunnelService_Exit_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1086,7 +903,7 @@ func (c *tunnelServiceClient) Exit(ctx context.Context, in *Empty, opts ...grpc. // TunnelServiceServer is the server API for TunnelService service. // All implementations must embed UnimplementedTunnelServiceServer -// for forward compatibility +// for forward compatibility. type TunnelServiceServer interface { Start(context.Context, *TunnelStartRequest) (*TunnelResponse, error) Stop(context.Context, *Empty) (*TunnelResponse, error) @@ -1095,9 +912,12 @@ type TunnelServiceServer interface { mustEmbedUnimplementedTunnelServiceServer() } -// UnimplementedTunnelServiceServer must be embedded to have forward compatible implementations. -type UnimplementedTunnelServiceServer struct { -} +// UnimplementedTunnelServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedTunnelServiceServer struct{} func (UnimplementedTunnelServiceServer) Start(context.Context, *TunnelStartRequest) (*TunnelResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") @@ -1112,6 +932,7 @@ func (UnimplementedTunnelServiceServer) Exit(context.Context, *Empty) (*TunnelRe return nil, status.Errorf(codes.Unimplemented, "method Exit not implemented") } func (UnimplementedTunnelServiceServer) mustEmbedUnimplementedTunnelServiceServer() {} +func (UnimplementedTunnelServiceServer) testEmbeddedByValue() {} // UnsafeTunnelServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to TunnelServiceServer will @@ -1121,6 +942,13 @@ type UnsafeTunnelServiceServer interface { } func RegisterTunnelServiceServer(s grpc.ServiceRegistrar, srv TunnelServiceServer) { + // If the following call pancis, it indicates UnimplementedTunnelServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&TunnelService_ServiceDesc, srv) } @@ -1221,5 +1049,5 @@ var TunnelService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "hiddifyrpc/hiddify.proto", + Metadata: "hiddify.proto", } diff --git a/mobile/mobile.go b/mobile/mobile.go index 1c63c37..77f84f0 100644 --- a/mobile/mobile.go +++ b/mobile/mobile.go @@ -6,12 +6,13 @@ import ( "path/filepath" "github.com/hiddify/hiddify-core/config" + _ "github.com/sagernet/gomobile" "github.com/sagernet/sing-box/option" ) func Setup() error { - // return config.StartGRPCServer(7078) + // return v2.Start(17078) return nil } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ab666e8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2656 @@ +{ + "name": "libcore", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "browserify": "^17.0.0", + "google-protobuf": "^3.21.4", + "grpc-web": "^1.5.0", + "protobufjs-cli": "^1.1.3" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jsdoc/salty": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", + "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==", + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v12.0.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "license": "MIT", + "dependencies": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + }, + "bin": { + "browser-pack": "bin/cmd.js" + } + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "license": "MIT", + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "license": "MIT", + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "license": "MIT", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserify/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/browserify/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "license": "MIT" + }, + "node_modules/cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", + "license": "MIT", + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/combine-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "license": "Apache-2.0" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "license": "MIT", + "dependencies": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + }, + "bin": { + "deps-sort": "bin/cmd.js" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "license": "MIT", + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "license": "MIT", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/elliptic": { + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "license": "Apache-2.0" + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/google-protobuf": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/grpc-web": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.5.0.tgz", + "integrity": "sha512-y1tS3BBIoiVSzKTDF3Hm7E8hV2n7YY7pO0Uo7depfWJqKzWE+SKr0jvHNIJsJJYILQlpYShpi/DRJJMbosgDMQ==", + "license": "Apache-2.0" + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "license": "MIT" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inline-source-map": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.3.tgz", + "integrity": "sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==", + "license": "MIT", + "dependencies": { + "source-map": "~0.5.3" + } + }, + "node_modules/inline-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "license": "MIT", + "dependencies": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "bin": { + "insert-module-globals": "bin/cmd.js" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "license": "Apache-2.0", + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsdoc": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", + "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/parser": "^7.20.15", + "@jsdoc/salty": "^0.2.1", + "@types/markdown-it": "^14.1.1", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "underscore": "~1.13.2" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "license": "Unlicense", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "license": "MIT", + "dependencies": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "module-deps": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "license": "MIT" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", + "license": "MIT", + "dependencies": { + "path-platform": "~0.11.15" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs-cli": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.3.tgz", + "integrity": "sha512-MqD10lqF+FMsOayFiNOdOGNlXc4iKDCf0ZQPkPR+gizYh9gqUeGTWulABUCdI+N67w5RfJ6xhgX4J8pa8qmMXQ==", + "license": "BSD-3-Clause", + "dependencies": { + "chalk": "^4.0.0", + "escodegen": "^1.13.0", + "espree": "^9.0.0", + "estraverse": "^5.1.0", + "glob": "^8.0.0", + "jsdoc": "^4.0.0", + "minimist": "^1.2.0", + "semver": "^7.1.2", + "tmp": "^0.2.1", + "uglify-js": "^3.7.7" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "protobufjs": "^7.0.0" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "license": "Apache-2.0", + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "license": "MIT", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "license": "MIT", + "dependencies": { + "minimist": "^1.1.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "license": "MIT", + "dependencies": { + "acorn-node": "^1.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "dependencies": { + "process": "~0.11.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "license": "MIT" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "license": "MIT", + "bin": { + "umd": "bin/cli.js" + } + }, + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "license": "Apache-2.0", + "dependencies": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + }, + "bin": { + "undeclared-identifiers": "bin.js" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT", + "peer": true + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "license": "MIT" + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "license": "Apache-2.0" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..55841c7 --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "browserify": "^17.0.0", + "google-protobuf": "^3.21.4", + "grpc-web": "^1.5.0", + "protobufjs-cli": "^1.1.3" + } +} diff --git a/utils/certificate_li.go b/utils/certificate_li.go index dc05ecc..12269b5 100644 --- a/utils/certificate_li.go +++ b/utils/certificate_li.go @@ -16,7 +16,19 @@ import ( "time" ) -func GenerateCertificate(certPath, keyPath string, isServer bool) { +func fileExists(path string) bool { + _, err := os.Stat(path) + return !os.IsNotExist(err) // returns true if the file exists +} + +func GenerateCertificate(certPath, keyPath string, isServer bool, skipIfExist bool) { + if skipIfExist && fileExists(certPath) && fileExists(keyPath) { + return + } + err := os.MkdirAll("cert", 0o744) + if err != nil { + panic(err) + } priv, err := ecdsa.GenerateKey(elliptic.P384(), rand.Reader) if err != nil { panic(err) @@ -56,7 +68,7 @@ func GenerateCertificate(certPath, keyPath string, isServer bool) { panic(err) } defer certFile.Close() - certFile.Chmod(0644) + certFile.Chmod(0o644) pem.Encode(certFile, &pem.Block{Type: "CERTIFICATE", Bytes: certDER}) keyFile, err := os.Create(keyPath) @@ -68,16 +80,12 @@ func GenerateCertificate(certPath, keyPath string, isServer bool) { if err != nil { panic(err) } - keyFile.Chmod(0644) + keyFile.Chmod(0o644) pem.Encode(keyFile, &pem.Block{Type: "EC PRIVATE KEY", Bytes: privBytes}) } -func LoadCertificate(certPath, keyPath string) tls.Certificate { - cert, err := tls.LoadX509KeyPair(certPath, keyPath) - if err != nil { - panic(err) - } - return cert +func LoadCertificate(certPath, keyPath string) (tls.Certificate, error) { + return tls.LoadX509KeyPair(certPath, keyPath) } func LoadClientCA(certPath string) *x509.CertPool { diff --git a/v2/grpc_server.go b/v2/grpc_server.go index 7ae36ad..23b1fdb 100644 --- a/v2/grpc_server.go +++ b/v2/grpc_server.go @@ -8,7 +8,9 @@ import ( "log" "net" + "github.com/hiddify/hiddify-core/extension" pb "github.com/hiddify/hiddify-core/hiddifyrpc" + "google.golang.org/grpc" ) @@ -23,16 +25,16 @@ type TunnelService struct { pb.UnimplementedTunnelServiceServer } -func StartGrpcServer(listenAddressG string, service string) error { - +func StartGrpcServer(listenAddressG string, service string) (*grpc.Server, error) { lis, err := net.Listen("tcp", listenAddressG) if err != nil { log.Printf("failed to listen: %v", err) - return err + return nil, err } s := grpc.NewServer() if service == "core" { pb.RegisterCoreServer(s, &CoreService{}) + pb.RegisterExtensionHostServiceServer(s, &extension.ExtensionHostService{}) } else if service == "hello" { pb.RegisterHelloServer(s, &HelloService{}) } else if service == "tunnel" { @@ -43,17 +45,20 @@ func StartGrpcServer(listenAddressG string, service string) error { if err := s.Serve(lis); err != nil { log.Printf("failed to serve: %v", err) } + log.Printf("Server stopped") + // cancel() }() - return nil + return s, nil } -func StartCoreGrpcServer(listenAddressG string) error { + +func StartCoreGrpcServer(listenAddressG string) (*grpc.Server, error) { return StartGrpcServer(listenAddressG, "core") } -func StartHelloGrpcServer(listenAddressG string) error { +func StartHelloGrpcServer(listenAddressG string) (*grpc.Server, error) { return StartGrpcServer(listenAddressG, "hello") } -func StartTunnelGrpcServer(listenAddressG string) error { +func StartTunnelGrpcServer(listenAddressG string) (*grpc.Server, error) { return StartGrpcServer(listenAddressG, "tunnel") } diff --git a/v2/tunnel_platform_service.go b/v2/tunnel_platform_service.go index 0931f35..431d09b 100644 --- a/v2/tunnel_platform_service.go +++ b/v2/tunnel_platform_service.go @@ -16,8 +16,10 @@ type hiddifyNext struct{} var port int = 18020 func (m *hiddifyNext) Start(s service.Service) error { - return StartTunnelGrpcServer(fmt.Sprintf("127.0.0.1:%d", port)) + _, err := StartTunnelGrpcServer(fmt.Sprintf("127.0.0.1:%d", port)) + return err } + func (m *hiddifyNext) Stop(s service.Service) error { _, err := Stop() if err != nil { @@ -39,6 +41,7 @@ func getCurrentExecutableDirectory() string { return executableDirectory } + func StartTunnelService(goArg string) (int, string) { svcConfig := &service.Config{ Name: "HiddifyTunnelService", @@ -141,5 +144,4 @@ func control(s service.Service, goArg string) (int, string) { } return 2, out } - }