From 4898b323dd936148a2b2585736c60261cd4b2c58 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 11 Feb 2024 22:56:09 -0500 Subject: [PATCH 1/3] Version 7.2.0.0 --- CHANGELOG.md | 37 ++++++++++++++++++++++--------------- README.md | 14 ++++++++------ examples.go | 8 ++++---- go.mod | 1 + kinetica/gpudb.go | 10 ++++------ 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26693b6..e0ed333 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,22 @@ -# Kinetica Go API Changelog - - -## Version 7.1 - -### Version 7.1.9.0 - 2023-08-12 - -- Initial release, with the following endpoint calls: - - - `/execute/sql` - - `/get/records` - - `/insert/records` - - `/show/system/properties` - - `/show/system/status` - - `/show/table` +# Kinetica Go API Changelog + + +## Version 7.2 + +### Version 7.2.0.0 - 2024-02-11 + +- Initial 7.2 release + + +## Version 7.1 + +### Version 7.1.9.0 - 2023-08-12 + +- Initial release, with the following endpoint calls: + + - `/execute/sql` + - `/get/records` + - `/insert/records` + - `/show/system/properties` + - `/show/system/status` + - `/show/table` diff --git a/README.md b/README.md index 71021f4..a1149f2 100644 --- a/README.md +++ b/README.md @@ -2,24 +2,26 @@ Kinetica Logo
- Website - | - Docs - | - Community Slack + Website + | + Docs + | + Community Slack
+ # Kinetica GOLANG API - [Overview](#overview) - [Support](#support) - [Contact Us](#contact-us) + ## Overview This project contains the source code of the Golang Kinetica API. -The documentation can be found at . +The documentation can be found at . ### Usage diff --git a/examples.go b/examples.go index bb5fb14..a976409 100644 --- a/examples.go +++ b/examples.go @@ -7,9 +7,9 @@ import ( "sync" "time" - "github.com/gocarina/gocsv" "github.com/kineticadb/kinetica-api-go/example" "github.com/kineticadb/kinetica-api-go/kinetica" + "github.com/gocarina/gocsv" "go.uber.org/multierr" "go.uber.org/zap" ) @@ -19,9 +19,9 @@ var ( ) func main() { - endpoint := "http://172.17.0.2:9191" //os.Args[1] - username := "admin" //os.Args[2] - password := "Kinetica1." //os.Args[3] + endpoint := "http://127.0.0.1:9191" //os.Args[1] + username := "" //os.Args[2] + password := "" //os.Args[3] // Logger, err := zap.NewProduction() // if err != nil { diff --git a/go.mod b/go.mod index bba6d49..9269deb 100644 --- a/go.mod +++ b/go.mod @@ -22,6 +22,7 @@ require ( github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gocarina/gocsv v0.0.0-20230616125104-99d496ca653d + github.com/hamba/avro/v2 v2.13.0 github.com/json-iterator/go v1.1.12 // indirect github.com/logrusorgru/aurora v2.0.3+incompatible // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect diff --git a/kinetica/gpudb.go b/kinetica/gpudb.go index afb7153..a8bb975 100644 --- a/kinetica/gpudb.go +++ b/kinetica/gpudb.go @@ -75,10 +75,6 @@ func NewWithOptions(ctx context.Context, url string, options *KineticaOptions) * tracer := otel.GetTracerProvider().Tracer("kinetica-golang-api") client.DisableWarn = true - if options.ByPassSslCertCheck { - client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}) - } - _, childSpan = tracer.Start(ctx, "NewWithOptions()") defer childSpan.End() @@ -361,8 +357,6 @@ func (kinetica *Kinetica) submitRawRequest( )) body := httpResponse.Body() - bodyStr := string(body[:]) - fmt.Println(bodyStr) reader := avro.NewReader(bytes.NewBuffer(body), len(body)) status := reader.ReadString() @@ -420,6 +414,10 @@ func (kinetica *Kinetica) buildHTTPRequest(ctx context.Context, requestBody *[]b // childSpan trace.Span ) + if kinetica.options.ByPassSslCertCheck { + kinetica.client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}) + } + request := kinetica.client.R(). SetBasicAuth(kinetica.options.Username, kinetica.options.Password) From a0bdf3d5c5551948c39b60c0d351f10a77d2e925 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 27 Mar 2024 15:53:13 -0400 Subject: [PATCH 2/3] Version 7.2.0.1 --- CHANGELOG.md | 55 ++++++---- README.md | 277 ++++++++++++++++++++++++++------------------------- examples.go | 2 +- go.mod | 73 +++++++------- 4 files changed, 210 insertions(+), 197 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0ed333..422aeca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,33 @@ -# Kinetica Go API Changelog - - -## Version 7.2 - -### Version 7.2.0.0 - 2024-02-11 - -- Initial 7.2 release - - -## Version 7.1 - -### Version 7.1.9.0 - 2023-08-12 - -- Initial release, with the following endpoint calls: - - - `/execute/sql` - - `/get/records` - - `/insert/records` - - `/show/system/properties` - - `/show/system/status` - - `/show/table` +# Kinetica Go API Changelog + + +## Version 7.2 + +### Version 7.2.0.1 - 2024-03-27 + +- Upgraded `golang.org/x/net` library from v0.9.0 to v0.16.0 + + +### Version 7.2.0.0 - 2024-02-11 + +- Initial 7.2 release + + + +## Version 7.1 + +### Version 7.1.9.1 - 2024-03-27 + +- Upgraded `golang.org/x/net` library from v0.9.0 to v0.16.0 + + +### Version 7.1.9.0 - 2023-08-12 + +- Initial release, with the following endpoint calls: + + - `/execute/sql` + - `/get/records` + - `/insert/records` + - `/show/system/properties` + - `/show/system/status` + - `/show/table` diff --git a/README.md b/README.md index a1149f2..efb39f4 100644 --- a/README.md +++ b/README.md @@ -1,137 +1,140 @@ -

- Kinetica Logo -

-
- Website - | - Docs - | - Community Slack -
- - -# Kinetica GOLANG API - -- [Overview](#overview) -- [Support](#support) -- [Contact Us](#contact-us) - - -## Overview - -This project contains the source code of the Golang Kinetica API. - -The documentation can be found at . - -### Usage - -For using this API in a `GO` project add the lines - -```GO -require ( - github.com/kineticadb/gpudb-api-go v0.0.1 -) -``` - -to the `go.mod` file of your project. - -For changes to the client-side API, please refer to -[CHANGELOG.md](CHANGELOG.md). - -### Starter example - -```GO - -package main - -import ( - "context" - "fmt" - "os" - "sync" - "time" - - "github.com/kineticadb/gpudb-api-go/example" - "github.com/kineticadb/gpudb-api-go/kinetica" - "go.uber.org/multierr" - "go.uber.org/zap" -) - -func main() { - endpoint := os.Args[1] - username := os.Args[2] - password := os.Args[3] - - ctx := context.TODO() - options := kinetica.KineticaOptions{Username: username, Password: password} - // fmt.Println("Options", options) - dbInst := kinetica.NewWithOptions(ctx, endpoint, &options) -} - -``` - -### Logging - -The logging is done using Uber zap package and `lumberjack` for rotating files based on size. Time based rotation is not supported yet. The configuration for `lumberjack` can be found here - - -#### Default Log Config file - -This is included and will be used in case a user defined config file is not found. The name of the file is `log_config.yaml`. - -```yaml -level: 'info' -development: true -disableCaller: false -disableStacktrace: false -encoding: 'console' -encoderConfig: - messageKey: 'msg' - levelKey: 'level' - timeKey: 'ts' - nameKey: 'logger' - callerKey: 'caller' - functionKey: 'function' - stacktraceKey: 'stacktrace' - skipLineEnding: false - lineEnding: "\n" - levelEncoder: 'capital' - timeEncoder: 'iso8601' - durationEncoder: 'string' - callerEncoder: 'full' - nameEncoder: 'full' - consoleSeparator: ' | ' -outputPaths: - # Implements logging to the console - - 'stdout' - # Implements rolling logs using lumberjack logger; config parameters are supplied as - # query params. Here maxSize is 10MB after which the logger rolls over; maximum - # number of backups (maxBackups) kept is 5 and maxAge is 10 days. - # The name of the log file in this case is "logs/gpudb-api.log" where the - # "logs" directory is under the current directory on the local machine. - - 'lumberjack://localhost/logs/gpudb-api.log?maxSize=10&maxBackups=5&maxAge=10' -errorOutputPaths: - - 'stderr' - - './logs/error_logs' -initialFields: - app: 'gpudb-api' -``` - - -## Support - -For bugs, please submit an -[issue on Github](https://github.com/kineticadb/kinetica-api-go/issues). - -For support, you can post on -[stackoverflow](https://stackoverflow.com/questions/tagged/kinetica) under the -``kinetica`` tag or -[Slack](https://join.slack.com/t/kinetica-community/shared_invite/zt-1bt9x3mvr-uMKrXlSDXfy3oU~sKi84qg). - -## Contact Us - -- Ask a question on Slack: - [Slack](https://join.slack.com/t/kinetica-community/shared_invite/zt-1bt9x3mvr-uMKrXlSDXfy3oU~sKi84qg) -- Follow on GitHub: - [Follow @kineticadb](https://github.com/kineticadb) -- Email us: -- Visit: +

+ Kinetica Logo +

+
+ Website + | + Docs + | + Community Slack +
+ + +# Kinetica GOLANG API + +- [Overview](#overview) +- [Support](#support) +- [Contact Us](#contact-us) + + +## Overview + +This project contains the source code of the Golang Kinetica API. + +The documentation can be found at . + +### Usage + +For using this API in a `GO` project add the lines + +```GO +require ( + github.com/kineticadb/gpudb-api-go v0.0.4 +) +``` + +to the `go.mod` file of your project. + +For changes to the client-side API, please refer to +[CHANGELOG.md](CHANGELOG.md). + +### Starter example + +```GO + +package main + +import ( + "context" + "fmt" + "os" + "sync" + "time" + + "github.com/kineticadb/gpudb-api-go/example" + "github.com/kineticadb/gpudb-api-go/kinetica" + "go.uber.org/multierr" + "go.uber.org/zap" +) + +func main() { + endpoint := os.Args[1] + username := os.Args[2] + password := os.Args[3] + + ctx := context.TODO() + options := kinetica.KineticaOptions{Username: username, Password: password} + dbInst := kinetica.NewWithOptions(ctx, endpoint, &options) +} + +``` + +### Logging + +The logging is done using Uber zap package and `lumberjack` for rotating files +based on size. Time based rotation is not supported yet. The configuration for +`lumberjack` can be found here - + + +#### Default Log Config file + +This is included and will be used in case a user defined config file is not +found. The name of the file is `log_config.yaml`. + +```yaml +level: 'info' +development: true +disableCaller: false +disableStacktrace: false +encoding: 'console' +encoderConfig: + messageKey: 'msg' + levelKey: 'level' + timeKey: 'ts' + nameKey: 'logger' + callerKey: 'caller' + functionKey: 'function' + stacktraceKey: 'stacktrace' + skipLineEnding: false + lineEnding: "\n" + levelEncoder: 'capital' + timeEncoder: 'iso8601' + durationEncoder: 'string' + callerEncoder: 'full' + nameEncoder: 'full' + consoleSeparator: ' | ' +outputPaths: + # Implements logging to the console + - 'stdout' + # Implements rolling logs using lumberjack logger; config parameters are supplied as + # query params. Here maxSize is 10MB after which the logger rolls over; maximum + # number of backups (maxBackups) kept is 5 and maxAge is 10 days. + # The name of the log file in this case is "logs/gpudb-api.log" where the + # "logs" directory is under the current directory on the local machine. + - 'lumberjack://localhost/logs/gpudb-api.log?maxSize=10&maxBackups=5&maxAge=10' +errorOutputPaths: + - 'stderr' + - './logs/error_logs' +initialFields: + app: 'gpudb-api' +``` + + +## Support + +For bugs, please submit an +[issue on Github](https://github.com/kineticadb/kinetica-api-go/issues). + +For support, you can post on +[stackoverflow](https://stackoverflow.com/questions/tagged/kinetica) under the +``kinetica`` tag or +[Slack](https://join.slack.com/t/kinetica-community/shared_invite/zt-1bt9x3mvr-uMKrXlSDXfy3oU~sKi84qg). + +## Contact Us + +- Ask a question on Slack: + [Slack](https://join.slack.com/t/kinetica-community/shared_invite/zt-1bt9x3mvr-uMKrXlSDXfy3oU~sKi84qg) +- Follow on GitHub: + [Follow @kineticadb](https://github.com/kineticadb) +- Email us: +- Visit: diff --git a/examples.go b/examples.go index a976409..90771f1 100644 --- a/examples.go +++ b/examples.go @@ -19,7 +19,7 @@ var ( ) func main() { - endpoint := "http://127.0.0.1:9191" //os.Args[1] + endpoint := "http://localhost:9191" //os.Args[1] username := "" //os.Args[2] password := "" //os.Args[3] diff --git a/go.mod b/go.mod index 9269deb..7b5aa84 100644 --- a/go.mod +++ b/go.mod @@ -1,37 +1,36 @@ -module github.com/kineticadb/kinetica-api-go - -go 1.20 - -require ( - github.com/davecgh/go-spew v1.1.1 - github.com/go-resty/resty/v2 v2.7.0 - github.com/golang/snappy v0.0.4 - github.com/hamba/avro/v2 v2.13.0 - github.com/mitchellh/mapstructure v1.5.0 - github.com/ztrue/tracerr v0.3.0 - go.opentelemetry.io/otel v1.14.0 - go.opentelemetry.io/otel/trace v1.14.0 -) - -require ( - go.uber.org/atomic v1.7.0 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect -) - -require ( - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/gocarina/gocsv v0.0.0-20230616125104-99d496ca653d - github.com/hamba/avro/v2 v2.13.0 - github.com/json-iterator/go v1.1.12 // indirect - github.com/logrusorgru/aurora v2.0.3+incompatible // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/samber/lo v1.38.1 - go.uber.org/multierr v1.11.0 - go.uber.org/zap v1.24.0 - golang.org/x/net v0.9.0 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 - gopkg.in/yaml.v2 v2.4.0 - -) +module github.com/kineticadb/kinetica-api-go + +go 1.20 + +require ( + github.com/davecgh/go-spew v1.1.1 + github.com/go-resty/resty/v2 v2.7.0 + github.com/golang/snappy v0.0.4 + github.com/hamba/avro/v2 v2.13.0 + github.com/mitchellh/mapstructure v1.5.0 + github.com/ztrue/tracerr v0.3.0 + go.opentelemetry.io/otel v1.14.0 + go.opentelemetry.io/otel/trace v1.14.0 +) + +require ( + go.uber.org/atomic v1.7.0 // indirect + golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect +) + +require ( + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/gocarina/gocsv v0.0.0-20230616125104-99d496ca653d + github.com/hamba/avro/v2 v2.13.0 + github.com/json-iterator/go v1.1.12 // indirect + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/samber/lo v1.38.1 + go.uber.org/multierr v1.11.0 + go.uber.org/zap v1.24.0 + golang.org/x/net v0.16.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 + gopkg.in/yaml.v2 v2.4.0 +) From 86b7b8acdd8ab49ff7017b2ec43d04cf23142f54 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 27 Mar 2024 23:04:33 -0400 Subject: [PATCH 3/3] Version 7.2.0.1 --- CHANGELOG.md | 6 +++-- examples.go | 36 +++++++++++++++++++++----- go.mod | 71 ++++++++++++++++++++++++++-------------------------- go.sum | 4 +-- 4 files changed, 71 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 422aeca..1960f6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ ### Version 7.2.0.1 - 2024-03-27 -- Upgraded `golang.org/x/net` library from v0.9.0 to v0.16.0 +- Upgraded `golang.org/x/net` library from v0.9.0 to v0.22.0 +- Added runnable example to `examples.go` ### Version 7.2.0.0 - 2024-02-11 @@ -18,7 +19,8 @@ ### Version 7.1.9.1 - 2024-03-27 -- Upgraded `golang.org/x/net` library from v0.9.0 to v0.16.0 +- Upgraded `golang.org/x/net` library from v0.9.0 to v0.22.0 +- Added runnable example to `examples.go` ### Version 7.1.9.0 - 2023-08-12 diff --git a/examples.go b/examples.go index 90771f1..3f9c1fa 100644 --- a/examples.go +++ b/examples.go @@ -19,9 +19,9 @@ var ( ) func main() { - endpoint := "http://localhost:9191" //os.Args[1] - username := "" //os.Args[2] - password := "" //os.Args[3] + endpoint := os.Args[1] + username := os.Args[2] + password := os.Args[3] // Logger, err := zap.NewProduction() // if err != nil { @@ -38,6 +38,7 @@ func main() { fmt.Println(anyValue...) + runMain(dbInst) // runShowExplainVerboseAnalyseSqlStatement(dbInst) // runShowExplainVerboseSqlStatement(dbInst) // runShowStoredProcedureDDL(dbInst) @@ -59,7 +60,7 @@ func main() { // runShowSystemTiming1(dbInst) // runShowSystemProperties1(dbInst) // runExecuteSql1(dbInst) - pagingTable = runExecuteSql2(dbInst) + // pagingTable = runExecuteSql2(dbInst) // runExecuteSql3(dbInst) // runExecuteSql4(dbInst) // runExecuteSql5(dbInst) @@ -72,8 +73,8 @@ func main() { // runGetRecords1(dbInst) // runGetRecords2(dbInst) // runGetRecords3(dbInst) - runGetRecords4(dbInst) - runGetRecords5(dbInst, pagingTable) + // runGetRecords4(dbInst) + // runGetRecords5(dbInst, pagingTable) // runInsertRecords(Logger, dbInst) // runCreateResourceGroup(dbInst, "lucid_test") // runDeleteResourceGroup(dbInst, "lucid_test") @@ -82,6 +83,29 @@ func main() { } + +func runMain(dbInst *kinetica.Kinetica) { + start := time.Now() + result, err := dbInst.ExecuteSqlRaw(context.TODO(), "CREATE OR REPLACE TABLE go (id INT, name VARCHAR(64))", 0, 0, "", nil) + if err != nil { + panic(err) + } + fmt.Println("\nCREATE: ", *result) + result, err = dbInst.ExecuteSqlRaw(context.TODO(), "INSERT INTO go VALUES (1, 'Joe'), (2, 'Jane')", 0, 0, "", nil) + if err != nil { + panic(err) + } + fmt.Println("\nINSERT: ", *result) + records, grm_err := dbInst.ExecuteSqlRaw(context.TODO(), "SELECT * FROM go ORDER BY id", 0, 0, "", nil) + if grm_err != nil { + panic(grm_err) + } + duration := time.Since(start) + fmt.Printf("\nSELECT: %+v\n", *records) + fmt.Println("runMain", duration.Milliseconds(), " ms") +} + + func runShowExplainVerboseAnalyseSqlStatement(dbInst *kinetica.Kinetica) { start := time.Now() // string field diff --git a/go.mod b/go.mod index 7b5aa84..66e1799 100644 --- a/go.mod +++ b/go.mod @@ -1,36 +1,35 @@ -module github.com/kineticadb/kinetica-api-go - -go 1.20 - -require ( - github.com/davecgh/go-spew v1.1.1 - github.com/go-resty/resty/v2 v2.7.0 - github.com/golang/snappy v0.0.4 - github.com/hamba/avro/v2 v2.13.0 - github.com/mitchellh/mapstructure v1.5.0 - github.com/ztrue/tracerr v0.3.0 - go.opentelemetry.io/otel v1.14.0 - go.opentelemetry.io/otel/trace v1.14.0 -) - -require ( - go.uber.org/atomic v1.7.0 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect -) - -require ( - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/gocarina/gocsv v0.0.0-20230616125104-99d496ca653d - github.com/hamba/avro/v2 v2.13.0 - github.com/json-iterator/go v1.1.12 // indirect - github.com/logrusorgru/aurora v2.0.3+incompatible // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/samber/lo v1.38.1 - go.uber.org/multierr v1.11.0 - go.uber.org/zap v1.24.0 - golang.org/x/net v0.16.0 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 - gopkg.in/yaml.v2 v2.4.0 -) +module github.com/kineticadb/kinetica-api-go + +go 1.20 + +require ( + github.com/davecgh/go-spew v1.1.1 + github.com/go-resty/resty/v2 v2.7.0 + github.com/golang/snappy v0.0.4 + github.com/hamba/avro/v2 v2.13.0 + github.com/mitchellh/mapstructure v1.5.0 + github.com/ztrue/tracerr v0.3.0 + go.opentelemetry.io/otel v1.14.0 + go.opentelemetry.io/otel/trace v1.14.0 +) + +require ( + go.uber.org/atomic v1.7.0 // indirect + golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect +) + +require ( + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/gocarina/gocsv v0.0.0-20230616125104-99d496ca653d + github.com/json-iterator/go v1.1.12 // indirect + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/samber/lo v1.38.1 + go.uber.org/multierr v1.11.0 + go.uber.org/zap v1.24.0 + golang.org/x/net v0.22.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 + gopkg.in/yaml.v2 v2.4.0 +) diff --git a/go.sum b/go.sum index 7e38e4f..cc785de 100644 --- a/go.sum +++ b/go.sum @@ -53,8 +53,8 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= 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/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=