diff --git a/.env.example b/.env.example index b8e1c1f..ed279d5 100644 --- a/.env.example +++ b/.env.example @@ -5,3 +5,11 @@ APP_LISTEN_PORT=3000 APP_BEHIND_PROXY=false DATABASE_DSN="host=localhost user=camarades password=camarades dbname=camarades port=5432 sslmode=disable TimeZone=Europe/Zurich" SESSIONS_LOCATION=./sessions.db +AUTHELIA_USERS_LOCATION=./users.yml +AUTHELIA_RESET_URL=https://login.popvaud.ch/reset-password/step1 +MAIL_HOST=mail.infomaniak.com +MAIL_PORT=587 +MAIL_USERNAME=no-reply@popvaud.ch +MAIL_PASSWORD=very-secure-password +MAIL_FROM_NAME=POP Vaud +MAIL_FROM_ADDRESS=no-reply@popvaud.ch \ No newline at end of file diff --git a/.gitignore b/.gitignore index b6c620e..971cd36 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ static/assets pop-camarades *.db __debug_bin* +users.yml \ No newline at end of file diff --git a/compose.yml b/compose.yml index b1e57b0..134de7d 100644 --- a/compose.yml +++ b/compose.yml @@ -1,6 +1,6 @@ services: postgres: - image: postgres:latest + image: postgres:17 container_name: camarades-postgres ports: - "127.0.0.1:5432:5432" diff --git a/controllers/contacts.go b/controllers/contacts.go index aa15e61..1d1ed38 100644 --- a/controllers/contacts.go +++ b/controllers/contacts.go @@ -94,7 +94,7 @@ func Contacts(c *fiber.Ctx) error { db.Order("position asc").Find(&fields, "person_type = ?", "contact") return c.Render("people", fiber.Map{ - "PageTitle": "Contacts", + "PageTitle": "Sympathisants", "MembersPage": false, "People": results.Results, "Pagination": results.Pagination, @@ -462,7 +462,9 @@ func ContactAdd(c *fiber.Ctx) error { case "FirstName": errors = append(errors, "Le prénom est requis et ne peut pas contenir plus de 100 caractères") case "Email": - errors = append(errors, "L'adresse email doit être valide") + if len(data.Email) > 0 { + errors = append(errors, "L'adresse email doit être valide") + } case "Phone": errors = append(errors, "Le numéro de téléphone fixe est trop long") case "Mobile": @@ -495,6 +497,18 @@ func ContactAdd(c *fiber.Ctx) error { person.PostalCode = data.PostalCode person.City = data.City + if len(data.Email) > 0 { + var personEmail []models.Person + result := db.Find(&personEmail, "LOWER(email) = LOWER(?)", data.Email) + if result.Error != nil { + return result.Error + } + + if result.RowsAffected > 0 { + errors = append(errors, "L'adresse email est déjà utilisée par un membre ou un sympathisant") + } + } + sectionID, err := strconv.ParseUint(data.Section, 10, 0) if err == nil { for _, section := range sections { @@ -711,7 +725,9 @@ func ContactEdit(c *fiber.Ctx) error { case "FirstName": errors = append(errors, "Le prénom est requis et ne peut pas contenir plus de 100 caractères") case "Email": - errors = append(errors, "L'adresse email doit être valide") + if len(data.Email) > 0 { + errors = append(errors, "L'adresse email doit être valide") + } case "Phone": errors = append(errors, "Le numéro de téléphone fixe est trop long") case "Mobile": @@ -744,6 +760,18 @@ func ContactEdit(c *fiber.Ctx) error { person.PostalCode = data.PostalCode person.City = data.City + if len(data.Email) > 0 { + var personEmail []models.Person + result := db.Find(&personEmail, "LOWER(email) = LOWER(?) AND id <> ?", data.Email, person.ID) + if result.Error != nil { + return result.Error + } + + if result.RowsAffected > 0 { + errors = append(errors, "L'adresse email est déjà utilisée par un membre ou un sympathisant") + } + } + sectionID, err := strconv.ParseUint(data.Section, 10, 0) if err == nil { for _, section := range sections { diff --git a/controllers/members.go b/controllers/members.go index e1c0405..52eda37 100644 --- a/controllers/members.go +++ b/controllers/members.go @@ -8,17 +8,19 @@ import ( "time" "git.readonly.ch/bouzoure/pop-camarades/helpers" + "git.readonly.ch/bouzoure/pop-camarades/helpers/authelia" "git.readonly.ch/bouzoure/pop-camarades/helpers/database" "git.readonly.ch/bouzoure/pop-camarades/models" "github.com/charmbracelet/log" "github.com/go-playground/validator/v10" "github.com/gofiber/fiber/v2" + "github.com/google/uuid" ) type PersonValidation struct { LastName string `validate:"max=100"` FirstName string `validate:"required,min=1,max=100"` - Email string `validate:"max=100"` + Email string `validate:"max=100,email"` Phone string `validate:"max=100"` Mobile string `validate:"max=100"` Address1 string `validate:"max=100"` @@ -477,7 +479,9 @@ func MemberAdd(c *fiber.Ctx) error { case "FirstName": errors = append(errors, "Le prénom est requis et ne peut pas contenir plus de 100 caractères") case "Email": - errors = append(errors, "L'adresse email doit être valide") + if len(data.Email) > 0 { + errors = append(errors, "L'adresse email doit être valide") + } case "Phone": errors = append(errors, "Le numéro de téléphone fixe est trop long") case "Mobile": @@ -498,6 +502,18 @@ func MemberAdd(c *fiber.Ctx) error { } } + if len(data.Email) > 0 { + var personEmail []models.Person + result := db.Find(&personEmail, "LOWER(email) = LOWER(?)", data.Email) + if result.Error != nil { + return result.Error + } + + if result.RowsAffected > 0 { + errors = append(errors, "L'adresse email est déjà utilisée par un membre ou un sympathisant") + } + } + person.IsContact = false person.IsMember = true person.LastName = data.LastName @@ -622,6 +638,16 @@ func MemberAdd(c *fiber.Ctx) error { } } + if c.FormValue("account-enabled") == "on" { + personAccount := models.PersonAccount{ + PersonID: person.ID, + UUID: uuid.New(), + Enabled: true, + Groups: strings.Join(authelia.GetPersonGroups(person.ID), "|||"), + } + db.Create(&personAccount) + } + c.Redirect(fmt.Sprintf( "/members/%d", person.ID, @@ -700,6 +726,9 @@ func MemberEdit(c *fiber.Ctx) error { person.ID, ) + var personAccount models.PersonAccount + db.Find(&personAccount, "person_id = ?", person.ID) + var errors []string if c.Method() == "POST" { data := PersonValidation{ @@ -726,7 +755,9 @@ func MemberEdit(c *fiber.Ctx) error { case "FirstName": errors = append(errors, "Le prénom est requis et ne peut pas contenir plus de 100 caractères") case "Email": - errors = append(errors, "L'adresse email doit être valide") + if len(data.Email) > 0 { + errors = append(errors, "L'adresse email doit être valide") + } case "Phone": errors = append(errors, "Le numéro de téléphone fixe est trop long") case "Mobile": @@ -747,6 +778,18 @@ func MemberEdit(c *fiber.Ctx) error { } } + if len(data.Email) > 0 { + var personEmail []models.Person + result := db.Find(&personEmail, "LOWER(email) = LOWER(?) AND id <> ?", data.Email, person.ID) + if result.Error != nil { + return result.Error + } + + if result.RowsAffected > 0 { + errors = append(errors, "L'adresse email est déjà utilisée par un membre ou un sympathisant") + } + } + person.IsContact = false person.IsMember = true person.LastName = data.LastName @@ -878,6 +921,33 @@ func MemberEdit(c *fiber.Ctx) error { return result.Error } + if c.FormValue("account-enabled") == "on" && personAccount.ID <= 0 { + personAccount = models.PersonAccount{ + PersonID: person.ID, + UUID: uuid.New(), + Enabled: true, + Groups: strings.Join(authelia.GetPersonGroups(person.ID), "|||"), + } + db.Create(&personAccount) + } else if c.FormValue("account-enabled") == "on" && personAccount.ID > 0 { + personAccount.Enabled = true + personAccount.Groups = strings.Join(authelia.GetPersonGroups(person.ID), "|||") + + if personAccount.AccountCreated.Valid { + personAccount.UpdateNeeded = true + } + + db.Save(&personAccount) + } else if c.FormValue("account-enabled") != "on" && personAccount.ID > 0 { + personAccount.Enabled = false + + if personAccount.AccountCreated.Valid { + personAccount.UpdateNeeded = true + } + + db.Save(&personAccount) + } + c.Redirect(fmt.Sprintf( "/members/%d", person.ID, @@ -886,12 +956,13 @@ func MemberEdit(c *fiber.Ctx) error { } return c.Render("person_form", fiber.Map{ - "PageTitle": title, - "Person": person, - "Sections": sections, - "Fields": fields, - "FieldValues": fieldValues, - "Errors": errors, + "PageTitle": title, + "Person": person, + "Sections": sections, + "Fields": fields, + "FieldValues": fieldValues, + "PersonAccount": personAccount, + "Errors": errors, }) } diff --git a/controllers/users.go b/controllers/users.go index 4c15889..8301fce 100644 --- a/controllers/users.go +++ b/controllers/users.go @@ -109,7 +109,7 @@ func UserAdd(c *fiber.Ctx) error { user.Email = data.Email var usersEmail []models.User - result := db.Find(&usersEmail, "email = ?", user.Email) + result := db.Find(&usersEmail, "LOWER(email) = LOWER(?)", user.Email) if result.Error != nil { return result.Error } diff --git a/go.mod b/go.mod index 43925f7..c9a9c40 100644 --- a/go.mod +++ b/go.mod @@ -1,77 +1,83 @@ module git.readonly.ch/bouzoure/pop-camarades -go 1.23.4 +go 1.25.3 require ( - github.com/brianvoe/gofakeit/v7 v7.3.0 - github.com/charmbracelet/log v0.4.2 + github.com/alexedwards/argon2id v1.0.0 + github.com/brianvoe/gofakeit/v7 v7.14.1 + github.com/charmbracelet/log v1.0.0 github.com/flosch/pongo2/v6 v6.0.0 - github.com/go-playground/validator/v10 v10.27.0 - github.com/gofiber/fiber/v2 v2.52.8 + github.com/go-playground/validator/v10 v10.30.2 + github.com/gofiber/fiber/v2 v2.52.13 github.com/gofiber/helmet/v2 v2.2.26 - github.com/gofiber/storage/badger/v2 v2.0.1 + github.com/gofiber/storage/badger/v2 v2.1.5 github.com/gofiber/template/django/v3 v3.1.14 github.com/golobby/dotenv v1.3.2 github.com/google/uuid v1.6.0 github.com/pquerna/otp v1.5.0 - github.com/yuin/goldmark v1.7.12 - golang.org/x/crypto v0.40.0 + github.com/sethvargo/go-password v0.3.1 + github.com/wneessen/go-mail v0.7.2 + github.com/yuin/goldmark v1.8.2 + go.yaml.in/yaml/v4 v4.0.0-rc.4 + golang.org/x/crypto v0.50.0 gorm.io/driver/postgres v1.6.0 - gorm.io/gorm v1.30.0 + gorm.io/gorm v1.31.1 ) require ( - github.com/andybalholm/brotli v1.2.0 // indirect + github.com/andybalholm/brotli v1.2.1 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/boombuler/barcode v1.0.2 // indirect + github.com/boombuler/barcode v1.1.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/charmbracelet/colorprofile v0.3.1 // indirect + github.com/charmbracelet/colorprofile v0.4.3 // indirect github.com/charmbracelet/lipgloss v1.1.0 // indirect - github.com/charmbracelet/x/ansi v0.9.3 // indirect - github.com/charmbracelet/x/cellbuf v0.0.13 // indirect - github.com/charmbracelet/x/term v0.2.1 // indirect + github.com/charmbracelet/x/ansi v0.11.7 // indirect + github.com/charmbracelet/x/cellbuf v0.0.15 // indirect + github.com/charmbracelet/x/term v0.2.2 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgraph-io/badger/v3 v3.2103.5 // indirect github.com/dgraph-io/ristretto v0.2.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/gabriel-vasile/mimetype v1.4.9 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.13 // indirect + github.com/go-logfmt/logfmt v0.6.1 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/gofiber/template v1.8.3 // indirect - github.com/gofiber/utils v1.1.0 // indirect - github.com/gofiber/utils/v2 v2.0.0-beta.10 // indirect + github.com/gofiber/utils v1.2.0 // indirect + github.com/gofiber/utils/v2 v2.0.4 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/golobby/cast v1.3.3 // indirect - github.com/google/flatbuffers v25.2.10+incompatible // indirect + github.com/google/flatbuffers v25.12.19+incompatible // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.5 // indirect + github.com/jackc/pgx/v5 v5.9.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/compress v1.18.5 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/lucasb-eyer/go-colorful v1.4.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect + github.com/mattn/go-runewidth v0.0.23 // indirect github.com/muesli/termenv v0.16.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasthttp v1.63.0 // indirect + github.com/valyala/fasthttp v1.70.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.27.0 // indirect - google.golang.org/protobuf v1.36.6 // indirect + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect + golang.org/x/net v0.53.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.43.0 // indirect + golang.org/x/text v0.36.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/go.sum b/go.sum index 3f587d5..e6c8459 100644 --- a/go.sum +++ b/go.sum @@ -2,35 +2,41 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= -github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHcQQP0w= +github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw= +github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro= +github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.2 h1:79yrbttoZrLGkL/oOI8hBrUKucwOL0oOjUgEguGMcJ4= -github.com/boombuler/barcode v1.0.2/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/brianvoe/gofakeit/v7 v7.3.0 h1:TWStf7/lLpAjKw+bqwzeORo9jvrxToWEwp9b1J2vApQ= -github.com/brianvoe/gofakeit/v7 v7.3.0/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= +github.com/boombuler/barcode v1.1.0 h1:ChaYjBR63fr4LFyGn8E8nt7dBSt3MiU3zMOZqFvVkHo= +github.com/boombuler/barcode v1.1.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/brianvoe/gofakeit/v7 v7.14.1 h1:a7fe3fonbj0cW3wgl5VwIKfZtiH9C3cLnwcIXWT7sow= +github.com/brianvoe/gofakeit/v7 v7.14.1/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/colorprofile v0.3.1 h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL3m+AxCzDz40= -github.com/charmbracelet/colorprofile v0.3.1/go.mod h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0= +github.com/charmbracelet/colorprofile v0.4.3 h1:QPa1IWkYI+AOB+fE+mg/5/4HRMZcaXex9t5KX76i20Q= +github.com/charmbracelet/colorprofile v0.4.3/go.mod h1:/zT4BhpD5aGFpqQQqw7a+VtHCzu+zrQtt1zhMt9mR4Q= github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= -github.com/charmbracelet/log v0.4.2 h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsyig= -github.com/charmbracelet/log v0.4.2/go.mod h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw= -github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0= -github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= -github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k= -github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= -github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= -github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= +github.com/charmbracelet/log v1.0.0 h1:HVVVMmfOorfj3BA9i8X8UL69Hoz9lI0PYwXfJvOdRc4= +github.com/charmbracelet/log v1.0.0/go.mod h1:uYgY3SmLpwJWxmlrPwXvzVYujxis1vAKRV/0VQB7yWA= +github.com/charmbracelet/x/ansi v0.11.7 h1:kzv1kJvjg2S3r9KHo8hDdHFQLEqn4RBCb39dAYC84jI= +github.com/charmbracelet/x/ansi v0.11.7/go.mod h1:9qGpnAVYz+8ACONkZBUWPtL7lulP9No6p1epAihUZwQ= +github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI= +github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q= +github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= +github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -59,34 +65,34 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/flosch/pongo2/v6 v6.0.0 h1:lsGru8IAzHgIAw6H2m4PCyleO58I40ow6apih0WprMU= github.com/flosch/pongo2/v6 v6.0.0/go.mod h1:CuDpFm47R0uGGE7z13/tTlt1Y6zdxvr2RLT5LJhsHEU= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fxamacker/cbor/v2 v2.8.0 h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vtxU= -github.com/fxamacker/cbor/v2 v2.8.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= -github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= -github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/fxamacker/cbor/v2 v2.9.1 h1:2rWm8B193Ll4VdjsJY28jxs70IdDsHRWgQYAI80+rMQ= +github.com/fxamacker/cbor/v2 v2.9.1/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= +github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/go-logfmt/logfmt v0.6.1 h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE= +github.com/go-logfmt/logfmt v0.6.1/go.mod h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= -github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= -github.com/gofiber/fiber/v2 v2.52.8 h1:xl4jJQ0BV5EJTA2aWiKw/VddRpHrKeZLF0QPUxqn0x4= -github.com/gofiber/fiber/v2 v2.52.8/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/go-playground/validator/v10 v10.30.2 h1:JiFIMtSSHb2/XBUbWM4i/MpeQm9ZK2xqPNk8vgvu5JQ= +github.com/go-playground/validator/v10 v10.30.2/go.mod h1:mAf2pIOVXjTEBrwUMGKkCWKKPs9NheYGabeB04txQSc= +github.com/gofiber/fiber/v2 v2.52.13 h1:TOKP64iqC9b5P49VrBW5tHhUOvDyrtJ0xePEfzJbCbk= +github.com/gofiber/fiber/v2 v2.52.13/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= github.com/gofiber/helmet/v2 v2.2.26 h1:KreQVUpCIGppPQ6Yt8qQMaIR4fVXMnvBdsda0dJSsO8= github.com/gofiber/helmet/v2 v2.2.26/go.mod h1:XE0DF4cgf0M5xIt7qyAK5zOi8jJblhxfSDv9DAmEEQo= -github.com/gofiber/storage/badger/v2 v2.0.1 h1:iIB5Dh2dypJjdEruYgBf7H4l5a98R5pVKVLk5wbY5bo= -github.com/gofiber/storage/badger/v2 v2.0.1/go.mod h1:2LA5uR3q4xFVd0oXIZWK+7yzlO2vzLa/D062R7fowFI= +github.com/gofiber/storage/badger/v2 v2.1.5 h1:29aVC10GRbaFWk6ramu5rY1N3Xq3TDaFR5pk1NutitY= +github.com/gofiber/storage/badger/v2 v2.1.5/go.mod h1:pOu//ssR5WDvBsOeuYF6uXrHs4qiy3BOAX43goUM3so= github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc= github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8= github.com/gofiber/template/django/v3 v3.1.14 h1:SvTvs+u5vTZuu1Y2pMUD2NhaGIjBj9FmDA3XD50QBvw= github.com/gofiber/template/django/v3 v3.1.14/go.mod h1:gP4vH+T1ajZw7yaejqG1dZVdHQkMC/jPoQbmlG812I0= -github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= -github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= -github.com/gofiber/utils/v2 v2.0.0-beta.10 h1:yDQgcBKTnZiZ4S0YY+hpTnf5iJYwVaFA2HsOgOesAyY= -github.com/gofiber/utils/v2 v2.0.0-beta.10/go.mod h1:qEZ175nSOkl5xciHmqxwNDsWzwiB39gB8RgU1d3U4mQ= +github.com/gofiber/utils v1.2.0 h1:NCaqd+Efg3khhN++eeUUTyBz+byIxAsmIjpl8kKOMIc= +github.com/gofiber/utils v1.2.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= +github.com/gofiber/utils/v2 v2.0.4 h1:WwAxUA7L4MW2DjdEHF234lfqvBqd2vYYuBtA9TJq2ec= +github.com/gofiber/utils/v2 v2.0.4/go.mod h1:GGERKU3Vhj5z6hS8YKvxL99A54DjOvTFZ0cjZnG4Lj4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -115,8 +121,8 @@ github.com/golobby/cast v1.3.3/go.mod h1:0oDO5IT84HTXcbLDf1YXuk0xtg/cRDrxhbpWKxw github.com/golobby/dotenv v1.3.2 h1:9vA8XqXXIB3cX/5xQ1CTbOCPegioHtHXIxeFng+uOqQ= github.com/golobby/dotenv v1.3.2/go.mod h1:9MMVXqzLNluhVxCv3X/DLYBNUb289f05tr+df1+7278= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q= -github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v25.12.19+incompatible h1:haMV2JRRJCe1998HeW/p0X9UaMTK6SDo0ffLn2+DbLs= +github.com/google/flatbuffers v25.12.19+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= 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= @@ -124,8 +130,8 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/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-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -135,8 +141,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs= -github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= +github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw= +github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -146,8 +152,8 @@ github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= +github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -158,15 +164,15 @@ 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.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lucasb-eyer/go-colorful v1.4.0 h1:UtrWVfLdarDgc44HcS7pYloGHJUjHV/4FwW4TvVgFr4= +github.com/lucasb-eyer/go-colorful v1.4.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -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.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= +github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw= +github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= @@ -181,14 +187,15 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs= github.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/shamaton/msgpack/v2 v2.2.3 h1:uDOHmxQySlvlUYfQwdjxyybAOzjlQsD1Vjy+4jmO9NM= -github.com/shamaton/msgpack/v2 v2.2.3/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI= +github.com/sethvargo/go-password v0.3.1 h1:WqrLTjo7X6AcVYfC6R7GtSyuUQR9hGyAj/f1PYQZCJU= +github.com/sethvargo/go-password v0.3.1/go.mod h1:rXofC1zT54N7R8K/h1WDUdkf9BOx5OptoxrMBcrXzvs= +github.com/shamaton/msgpack/v3 v3.1.0 h1:jsk0vEAqVvvS9+fTZ5/EcQ9tz860c9pWxJ4Iwecz8gU= +github.com/shamaton/msgpack/v3 v3.1.0/go.mod h1:DcQG8jrdrQCIxr3HlMYkiXdMhK+KfN2CitkyzsQV4uc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -208,13 +215,15 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.63.0 h1:DisIL8OjB7ul2d7cBaMRcKTQDYnrGy56R4FCiuDP0Ns= -github.com/valyala/fasthttp v1.63.0/go.mod h1:REc4IeW+cAEyLrRPa5A81MIjvz0QE1laoTX2EaPHKJM= +github.com/valyala/fasthttp v1.70.0 h1:LAhMGcWk13QZWm85+eg8ZBNbrq5mnkWFGbHMUJHIdXA= +github.com/valyala/fasthttp v1.70.0/go.mod h1:oDZEHHkJ/Buyklg6uURmYs19442zFSnCIfX3j1FY3pE= +github.com/wneessen/go-mail v0.7.2 h1:xxPnhZ6IZLSgxShebmZ6DPKh1b6OJcoHfzy7UjOkzS8= +github.com/wneessen/go-mail v0.7.2/go.mod h1:+TkW6QP3EVkgTEqHtVmnAE/1MRhmzb8Y9/W3pweuS+k= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= @@ -224,25 +233,32 @@ github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.7.12 h1:YwGP/rrea2/CnCtUHgjuolG/PnMxdQtPMO5PvaE2/nY= -github.com/yuin/goldmark v1.7.12/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.8.2 h1:kEGpgqJXdgbkhcOgBxkC0X0PmoPG1ZyoZ117rDVp4zE= +github.com/yuin/goldmark v1.8.2/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.yaml.in/yaml/v4 v4.0.0-rc.4 h1:UP4+v6fFrBIb1l934bDl//mmnoIZEDK0idg1+AIvX5U= +go.yaml.in/yaml/v4 v4.0.0-rc.4/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80= 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-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +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/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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -252,8 +268,12 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +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.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -261,22 +281,39 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ 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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +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.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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= @@ -285,6 +322,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +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/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= @@ -310,8 +349,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 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.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -322,7 +361,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.6.0 h1:2dxzU8xJ+ivvqTRph34QX+WrRaJlmfyPqXmoGVjMBa4= gorm.io/driver/postgres v1.6.0/go.mod h1:vUw0mrGgrTK+uPHEhAdV4sfFELrByKVGnaVRkXDhtWo= -gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= -gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/helpers/authelia/database.go b/helpers/authelia/database.go new file mode 100644 index 0000000..47e0e62 --- /dev/null +++ b/helpers/authelia/database.go @@ -0,0 +1,74 @@ +package authelia + +import ( + "os" + + "git.readonly.ch/bouzoure/pop-camarades/helpers" + "go.yaml.in/yaml/v4" +) + +type AutheliaUser struct { + Password string `yaml:"password"` + DisplayName string `yaml:"displayname"` + Email string `yaml:"email"` + Groups []string `yaml:"groups"` + GivenName string `yaml:"given_name"` + MiddleName string `yaml:"middle_name"` + FamilyName string `yaml:"family_name"` + Nickname string `yaml:"nickname"` + Gender string `yaml:"gender"` + Birthdate string `yaml:"birthdate"` + Website string `yaml:"website"` + Profile string `yaml:"profile"` + Picture string `yaml:"picture"` + ZoneInfo string `yaml:"zoneinfo"` + Locale string `yaml:"locale"` + PhoneNumber string `yaml:"phone_number"` + PhoneExtension string `yaml:"phone_extension"` + Disabled bool `yaml:"disabled"` + Address any `yaml:"address"` + Extra map[string]any `yaml:"extra"` +} + +type AutheliaUsers struct { + Users map[string]AutheliaUser `yaml:"users"` +} + +func ReadDatabase() (AutheliaUsers, error) { + var users AutheliaUsers + + // Get config + config, err := helpers.GetConfig() + if err != nil { + return users, err + } + + // Read YAML file + filePath := config.Authelia.UsersLocation + fileContent, err := os.ReadFile(filePath) + if err != nil { + return users, err + } + + // Unmarshal YAML + err = yaml.Unmarshal(fileContent, &users) + + return users, err +} + +func WriteDatabase(users AutheliaUsers) error { + // Get config + config, err := helpers.GetConfig() + if err != nil { + return err + } + + // Marshal YAML + yamlData, err := yaml.Marshal(users) + if err != nil { + return err + } + + filePath := config.Authelia.UsersLocation + return os.WriteFile(filePath, yamlData, 0644) +} diff --git a/helpers/authelia/groups.go b/helpers/authelia/groups.go new file mode 100644 index 0000000..4620b13 --- /dev/null +++ b/helpers/authelia/groups.go @@ -0,0 +1,57 @@ +package authelia + +import ( + "fmt" + "strings" + + "git.readonly.ch/bouzoure/pop-camarades/helpers" + "git.readonly.ch/bouzoure/pop-camarades/models" +) + +func GetPersonGroups(userid uint) []string { + var groups []string + + db, err := helpers.GetDatabase() + if err != nil { + return groups + } + + var person models.Person + db.Preload("Section").Find(&person, "id = ?", userid) + + if person.SectionID <= 0 { + return groups + } + + groups = append(groups, fmt.Sprintf( + "section_%s", + strings.ReplaceAll(person.Section.ShortName, " ", "_"), + )) + + if person.Section.ParentSectionID == nil { + return groups + } + + parentID := person.Section.ParentSectionID + for { + var section models.Section + db.Preload("parent_section").Find(§ion, "id = ?", parentID) + + if section.ID <= 0 { + return groups + } + + groups = append(groups, fmt.Sprintf( + "section_%s", + strings.ReplaceAll(section.ShortName, " ", "_"), + )) + + if section.ParentSectionID != nil { + parentID = person.Section.ParentSectionID + } else { + break + } + } + + return groups +} diff --git a/helpers/authelia/mail.go b/helpers/authelia/mail.go new file mode 100644 index 0000000..5f6e68b --- /dev/null +++ b/helpers/authelia/mail.go @@ -0,0 +1,66 @@ +package authelia + +import ( + ht "html/template" + tt "text/template" + + "git.readonly.ch/bouzoure/pop-camarades/helpers" + "git.readonly.ch/bouzoure/pop-camarades/models" +) + +type InputWelcomeMail struct { + Person models.Person + ResetURL string +} + +func SendWelcomeMail(person models.Person) error { + config, err := helpers.GetConfig() + if err != nil { + return err + } + + mailer, err := helpers.GetMailer() + if err != nil { + return err + } + + msg, err := helpers.NewMessage() + if err != nil { + return err + } + + mailsFS, err := helpers.GetEmbeddedFS("mails") + if err != nil { + return err + } + + inputValues := InputWelcomeMail{ + Person: person, + ResetURL: config.Authelia.ResetURL, + } + + tplHTML, err := ht.ParseFS(mailsFS, "mails/welcome.html") + if err != nil { + return err + } + + tplTXT, err := tt.ParseFS(mailsFS, "mails/welcome.txt") + if err != nil { + return err + } + + msg.Subject("Ton compte POP Vaud a été créé") + msg.AddTo(person.Email) + + err = msg.SetBodyHTMLTemplate(tplHTML, inputValues) + if err != nil { + return err + } + + err = msg.AddAlternativeTextTemplate(tplTXT, inputValues) + if err != nil { + return err + } + + return mailer.DialAndSend(msg) +} diff --git a/helpers/authelia/users.go b/helpers/authelia/users.go new file mode 100644 index 0000000..437ee5e --- /dev/null +++ b/helpers/authelia/users.go @@ -0,0 +1,115 @@ +package authelia + +import ( + "fmt" + "strings" + "time" + + "git.readonly.ch/bouzoure/pop-camarades/helpers" + "git.readonly.ch/bouzoure/pop-camarades/models" + "github.com/alexedwards/argon2id" + "github.com/charmbracelet/log" + "github.com/sethvargo/go-password/password" +) + +func SyncUsers() error { + db, err := helpers.GetDatabase() + if err != nil { + return err + } + + var accounts []models.PersonAccount + result := db.Joins("Person").Find( + &accounts, "account_created IS NULL OR update_needed = ?", true, + ) + + if result.Error != nil { + return result.Error + } + + // If no accounts to create or update -> skip sync + if result.RowsAffected <= 0 { + return nil + } + + users, err := ReadDatabase() + if err != nil { + return err + } + + for _, account := range accounts { + accountExists := false + for uuid, user := range users.Users { + if uuid == account.UUID.String() { + accountExists = true + + // Update account + user.Disabled = !account.Enabled + user.Groups = strings.Split(account.Groups, "|||") + user.GivenName = account.Person.FirstName + user.FamilyName = account.Person.LastName + user.DisplayName = fmt.Sprintf("%s %s", + account.Person.FirstName, account.Person.LastName, + ) + user.Email = account.Person.Email + + // Overwrite old user struct + users.Users[uuid] = user + + // Exit loop early + break + } + } + + if !accountExists { + // Generate random password + randomPassword, err := password.Generate(64, 10, 10, false, false) + if err != nil { + log.Error(err) + continue + } + + argonParams := argon2id.Params{ + Iterations: 3, + Memory: 65536, + Parallelism: 4, + KeyLength: 32, + SaltLength: 16, + } + hashedPassword, err := argon2id.CreateHash(randomPassword, &argonParams) + if err != nil { + log.Error(err) + continue + } + + // Create account + user := AutheliaUser{ + Disabled: !account.Enabled, + Groups: strings.Split(account.Groups, "|||"), + GivenName: account.Person.FirstName, + FamilyName: account.Person.LastName, + DisplayName: fmt.Sprintf("%s %s", + account.Person.FirstName, account.Person.LastName, + ), + Email: account.Person.Email, + Password: hashedPassword, + } + + // Insert new user + users.Users[account.UUID.String()] = user + } + + account.UpdateNeeded = false + if !account.AccountCreated.Valid { + err := SendWelcomeMail(account.Person) + if err != nil { + log.Error(err) + } + account.AccountCreated.Scan(time.Now()) + } + + db.Save(&account) + } + + return WriteDatabase(users) +} diff --git a/helpers/config.go b/helpers/config.go index e87443d..a1f98c6 100644 --- a/helpers/config.go +++ b/helpers/config.go @@ -20,6 +20,18 @@ type Config struct { Sessions struct { Location string `env:"SESSIONS_LOCATION"` } + Authelia struct { + UsersLocation string `env:"AUTHELIA_USERS_LOCATION"` + ResetURL string `env:"AUTHELIA_RESET_URL"` + } + Mail struct { + Host string `env:"MAIL_HOST"` + Port int `env:"MAIL_PORT"` + Username string `env:"MAIL_USERNAME"` + Password string `env:"MAIL_PASSWORD"` + FromName string `env:"MAIL_FROM_NAME"` + FromAddress string `env:"MAIL_FROM_ADDRESS"` + } } var configParsed bool diff --git a/helpers/database.go b/helpers/database.go index 00ed2f8..73aacdf 100644 --- a/helpers/database.go +++ b/helpers/database.go @@ -52,6 +52,7 @@ func GetDatabase() (*gorm.DB, error) { &models.Role{}, &models.UserRole{}, &models.Person{}, + &models.PersonAccount{}, &models.List{}, &models.ListItem{}, &models.Field{}, diff --git a/helpers/mailer.go b/helpers/mailer.go new file mode 100644 index 0000000..977dbfb --- /dev/null +++ b/helpers/mailer.go @@ -0,0 +1,49 @@ +package helpers + +import ( + "github.com/wneessen/go-mail" +) + +var mailer *mail.Client +var mailerSet bool + +func GetMailer() (*mail.Client, error) { + if mailerSet { + return mailer, nil + } + + config, err := GetConfig() + if err != nil { + return mailer, err + } + + mailer, err = mail.NewClient( + config.Mail.Host, + mail.WithPort(config.Mail.Port), + mail.WithSMTPAuth(mail.SMTPAuthAutoDiscover), + mail.WithUsername(config.Mail.Username), + mail.WithPassword(config.Mail.Password), + ) + if err != nil { + return mailer, err + } + + mailerSet = true + return mailer, nil +} + +func NewMessage() (*mail.Msg, error) { + msg := mail.NewMsg() + + config, err := GetConfig() + if err != nil { + return msg, err + } + + msg.FromFormat( + config.Mail.FromName, + config.Mail.FromAddress, + ) + + return msg, nil +} diff --git a/mails/welcome.html b/mails/welcome.html new file mode 100644 index 0000000..c9ffcca --- /dev/null +++ b/mails/welcome.html @@ -0,0 +1,69 @@ + + + + + + Ton compte POP Vaud a été créé + + + + + + +
+ + + + + + + + + + + + + + + +
+

POP Vaud

+
+

Cher·e camarade,

+ +

+ Ton compte POP Vaud a été créé avec succès. Tu peux désormais accéder aux applications du parti. +

+ +

Informations de connexion :

+

+ Nom d'utilisateur : {{.Person.Email}} +

+ +

+ Pour commencer, réinitialise ton mot de passe en utilisant le lien suivant : +

+ +

+ Réinitialiser mon mot de passe +

+ +

Applications disponibles :

+ + +

+ En cas de problème, contacte informatique@popvaud.ch. +

+ +

+ Vive la révolution ! +

+
+ Les Camarades du POP Vaud +
+
+ + \ No newline at end of file diff --git a/mails/welcome.txt b/mails/welcome.txt new file mode 100644 index 0000000..8ed74cb --- /dev/null +++ b/mails/welcome.txt @@ -0,0 +1,19 @@ +Cher·e camarade, + +Ton compte POP Vaud a été créé avec succès. Tu peux désormais accéder aux applications du parti. + +Informations de connexion : +- Nom d'utilisateur : {{.Person.Email}} + +Pour commencer, réinitialise ton mot de passe en utilisant le lien suivant : +{{.ResetURL}} + +Applications disponibles : +- Wiki POP Vaud : https://wiki.popvaud.ch +- Nuage POP Vaud : https://nuage.popvaud.ch + +En cas de problème, contacte informatique@popvaud.ch. + +Vive la révolution ! + +Les camarades du POP Vaud \ No newline at end of file diff --git a/main.go b/main.go index 9c6bcdf..4c68e41 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( "git.readonly.ch/bouzoure/pop-camarades/controllers" "git.readonly.ch/bouzoure/pop-camarades/helpers" + "git.readonly.ch/bouzoure/pop-camarades/helpers/authelia" "git.readonly.ch/bouzoure/pop-camarades/jobs" "git.readonly.ch/bouzoure/pop-camarades/middlewares" "github.com/flosch/pongo2/v6" @@ -25,12 +26,16 @@ var embedStatic embed.FS //go:embed views var embedViews embed.FS +//go:embed mails +var embedMails embed.FS + func main() { log := helpers.GetLogger() // Add embedded filesystems to shared state helpers.AddEmbeddedFS("static", &embedStatic) helpers.AddEmbeddedFS("views", &embedViews) + helpers.AddEmbeddedFS("mails", &embedMails) // Fetch app config config, err := helpers.GetConfig() @@ -57,6 +62,18 @@ func main() { // Note: jobs will be executed at launch and after every interval go helpers.RegisterJob(60*time.Minute, "clean saved sessions", jobs.CleanSavedSessions) + // Goroutine to update Authelia accounts in the background + go func() { + for { + err = authelia.SyncUsers() + if err != nil { + log.Error(err) + } + + time.Sleep(time.Minute) + } + }() + // Initialize the Pongo2 templating engine // If we are in dev mode, load templates from directory // Otherwise, use the templates embedded in the binary diff --git a/models/people.go b/models/people.go index 8cab6a0..4e98532 100644 --- a/models/people.go +++ b/models/people.go @@ -1,6 +1,11 @@ package models -import "gorm.io/gorm" +import ( + "database/sql" + + "github.com/google/uuid" + "gorm.io/gorm" +) type Person struct { gorm.Model @@ -18,3 +23,15 @@ type Person struct { SectionID uint Section Section } + +type PersonAccount struct { + gorm.Model + PersonID uint + Person Person + UUID uuid.UUID `gorm:"unique"` + Enabled bool + Groups string + AccountCreated sql.NullTime + InvitationSent sql.NullTime + UpdateNeeded bool +} diff --git a/models/users.go b/models/users.go index 367c020..8eb330d 100644 --- a/models/users.go +++ b/models/users.go @@ -10,7 +10,7 @@ import ( type User struct { gorm.Model Name string - Email string + Email string `gorm:"unique"` Password string TotpSecret sql.NullString IsAdmin bool diff --git a/package.json b/package.json index 6a737f0..0b8e667 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,9 @@ "url": "https://git.readonly.ch/bouzoure/pop-camarades" }, "devDependencies": { - "@parcel/transformer-sass": "2.15.4", - "parcel": "^2.15.4", - "prettier": "^3.6.2", + "@parcel/transformer-sass": "^2.16.4", + "parcel": "^2.16.4", + "prettier": "^3.8.1", "prettier-plugin-jinja-template": "^2.1.0" }, "source": "frontend/index.js", @@ -32,7 +32,7 @@ "build": "go build" }, "dependencies": { - "bootstrap": "^5.3.7", + "bootstrap": "^5.3.8", "bootstrap-icons": "^1.13.1", "jquery": "^3.7.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f72a68d..a1aff4c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: bootstrap: - specifier: ^5.3.7 - version: 5.3.7(@popperjs/core@2.11.8) + specifier: ^5.3.8 + version: 5.3.8(@popperjs/core@2.11.8) bootstrap-icons: specifier: ^1.13.1 version: 1.13.1 @@ -19,25 +19,25 @@ importers: version: 3.7.1 devDependencies: '@parcel/transformer-sass': - specifier: 2.15.4 - version: 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + specifier: ^2.16.4 + version: 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) parcel: - specifier: ^2.15.4 - version: 2.15.4(@swc/helpers@0.5.17) + specifier: ^2.16.4 + version: 2.16.4(@swc/helpers@0.5.19) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.1 + version: 3.8.1 prettier-plugin-jinja-template: specifier: ^2.1.0 - version: 2.1.0(prettier@3.6.2) + version: 2.1.0(prettier@3.8.1) packages: - '@lezer/common@1.2.3': - resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + '@lezer/common@1.5.1': + resolution: {integrity: sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==} - '@lezer/lr@1.4.2': - resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + '@lezer/lr@1.4.8': + resolution: {integrity: sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==} '@lmdb/lmdb-darwin-arm64@2.8.5': resolution: {integrity: sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==} @@ -103,217 +103,221 @@ packages: cpu: [x64] os: [win32] - '@parcel/bundler-default@2.15.4': - resolution: {integrity: sha512-4vkaZuwGqL8L7NqEgjRznz9/QoeVKk0Z6z2nzfpdnSWA4xX3moUj+JeoqGUbyFGuPzfCma4SA4+txnQbKu0edQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/bundler-default@2.16.4': + resolution: {integrity: sha512-Nb8peNvhfm1+660CLwssWh4weY+Mv6vEGS6GPKqzJmTMw50udi0eS1YuWFzvmhSiu1KsYcUD37mqQ1LuIDtWoA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/cache@2.15.4': - resolution: {integrity: sha512-x/QgMuVvXQV6uNhIF+6kz6SzhVVkwf6WPSVG/xQvGMEiBabForDVYIhIEuN3RzUXCU352CGM6d8TtLLg61W1fw==} + '@parcel/cache@2.16.4': + resolution: {integrity: sha512-+uCyeElSga2MBbmbXpIj/WVKH7TByCrKaxtHbelfKKIJpYMgEHVjO4cuc7GUfTrUAmRUS8ZGvnX7Etgq6/jQhw==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/codeframe@2.15.4': - resolution: {integrity: sha512-ErAPEQaJIpB+ocNZ3rl8AEK6piA7JBInwZLNU0eHMthm01Ssb10JkpAadyn1w9IVfCey+kqQcEeWv47Yh6mL1Q==} + '@parcel/codeframe@2.16.4': + resolution: {integrity: sha512-s64aMfOJoPrXhKH+Y98ahX0O8aXWvTR+uNlOaX4yFkpr4FFDnviLcGngDe/Yo4Qq2FJZ0P6dNswbJTUH9EGxkQ==} engines: {node: '>= 16.0.0'} - '@parcel/compressor-raw@2.15.4': - resolution: {integrity: sha512-gECePZxVXBwyo0DYbAq4V4SimVzHaJ3p8QOgFIfOqNmlEBbhLf3QSjArFPJNKiHZaJuclh4a+IShFBN+u6tXXw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/compressor-raw@2.16.4': + resolution: {integrity: sha512-IK8IpNhw61B2HKgA1JhGhO9y+ZJFRZNTEmvhN1NdLdPqvgEXm2EunT+m6D9z7xeoeT6XnUKqM0eRckEdD0OXbA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/config-default@2.15.4': - resolution: {integrity: sha512-chUE4NpcSXpMfTcSmgl4Q78zH+ZFe0qdgZLBtF4EH2QQakW7wAXAYRxS2/P3xFkUj0/51sExhbCFWgulrlGDPw==} + '@parcel/config-default@2.16.4': + resolution: {integrity: sha512-kBxuTY/5trEVnvXk92l7LVkYjNuz3SaqWymFhPjEnc8GY4ZVdcWrWdXWTB9hUhpmRYJctFCyGvM0nN05JTiM2g==} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/core@2.15.4': - resolution: {integrity: sha512-+TXxTm58lFwXXObFAEclwKX1p1AdixcD+M7T4NeFIQzQ4F20Vr+6oybCSqW1exNA3uHqVDDFLx7TT78seVjvkg==} + '@parcel/core@2.16.4': + resolution: {integrity: sha512-a0CgrW5A5kwuSu5J1RFRoMQaMs9yagvfH2jJMYVw56+/7NRI4KOtu612SG9Y1ERWfY55ZwzyFxtLWvD6LO+Anw==} engines: {node: '>= 16.0.0'} - '@parcel/diagnostic@2.15.4': - resolution: {integrity: sha512-8MAqefwzBKceNN3364OLm+p4HRD7AfimfFW3MntLxPB6bnelc9UBg5c9zEm34zYEctbmky8gqYgAUSDjqYC5Hw==} + '@parcel/diagnostic@2.16.4': + resolution: {integrity: sha512-YN5CfX7lFd6yRLxyZT4Sj3sR6t7nnve4TdXSIqapXzQwL7Bw+sj79D95wTq2rCm3mzk5SofGxFAXul2/nG6gcQ==} engines: {node: '>= 16.0.0'} - '@parcel/error-overlay@2.15.4': - resolution: {integrity: sha512-xxeaWm8fV8Z4uGy/c09mOvmFSHBOgF1gCMQwLCwZvfMLqIWkdZaUQ2cRhWZIS6pOXaRVC7YpcXzk2DOiSUNSbQ==} + '@parcel/error-overlay@2.16.4': + resolution: {integrity: sha512-e8KYKnMsfmQnqIhsUWBUZAXlDK30wkxsAGle1tZ0gOdoplaIdVq/WjGPatHLf6igLM76c3tRn2vw8jZFput0jw==} engines: {node: '>= 16.0.0'} - '@parcel/events@2.15.4': - resolution: {integrity: sha512-SBq4zstaFr7XQaXNaQmUuVh1swCUHrhtPCOSofvkJoQGhjsuhQlh4t0NmUikyKNdj7C1j40xCS1kGHuUO29b0g==} + '@parcel/events@2.16.4': + resolution: {integrity: sha512-slWQkBRAA7o0cN0BLEd+yCckPmlVRVhBZn5Pn6ktm4EzEtrqoMzMeJOxxH8TXaRzrQDYnTcnYIHFgXWd4kkUfg==} engines: {node: '>= 16.0.0'} - '@parcel/feature-flags@2.15.4': - resolution: {integrity: sha512-DJqZVtbfjWJseM0gk7yyDkAuOhP7/FVwZ/YVqjozIqXBhmQm07xctiqNQyZX2vBbQsxmVbjpqyq+DOj45WPEzQ==} + '@parcel/feature-flags@2.16.4': + resolution: {integrity: sha512-nYdx53siKPLYikHHxfzgjzzgxdrjquK6DMnuSgOTyIdRG4VHdEN0+NqKijRLuVgiUFo/dtxc2h+amwqFENMw8w==} engines: {node: '>= 16.0.0'} - '@parcel/fs@2.15.4': - resolution: {integrity: sha512-5cahD2ByQaSi+YN0aDvrMWXZvs3mP7C5ey8zcDTDn7JxJa51sMqOQcdU3VUTzQFtAPeRM2KxUkxLhBBXgQqHZA==} + '@parcel/fs@2.16.4': + resolution: {integrity: sha512-maCMOiVn7oJYZlqlfxgLne8n6tSktIT1k0AeyBp4UGWCXyeJUJ+nL7QYShFpKNLtMLeF0cEtgwRAknWzbcDS1g==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/graph@3.5.4': - resolution: {integrity: sha512-uF7kyQXWK2fQZvG5eE0N3avYGLQE5Q0vyJsyypNcFW3kXNnrkZCUtbG7urmdae9mmZ2jXIVN4q4Bhd9pefGj9A==} + '@parcel/graph@3.6.4': + resolution: {integrity: sha512-Cj9yV+/k88kFhE+D+gz0YuNRpvNOCVDskO9pFqkcQhGbsGq6kg2XpZ9V7HlYraih31xf8Vb589bZOwjKIiHixQ==} engines: {node: '>= 16.0.0'} - '@parcel/logger@2.15.4': - resolution: {integrity: sha512-rQ7F5+FMQ7t+w5NGFRT8CWHhym0aunduufCjlafvRzUSKEN/5/nwTfCe9I5QsthGlXJWs+ZTy4zQ+wLtZQRBKQ==} + '@parcel/logger@2.16.4': + resolution: {integrity: sha512-QR8QLlKo7xAy9JBpPDAh0RvluaixqPCeyY7Fvo2K7hrU3r85vBNNi06pHiPbWoDmB4x1+QoFwMaGnJOHR+/fMA==} engines: {node: '>= 16.0.0'} - '@parcel/markdown-ansi@2.15.4': - resolution: {integrity: sha512-u5Lwcr4ZVBSLFbKYht+mJqJ3ZMXvJdmDMU5eDtrIEKPpu9LrIDdPpDEXBoyO6pDsoV/2AqyXUUMzBRyCatkkoQ==} + '@parcel/markdown-ansi@2.16.4': + resolution: {integrity: sha512-0+oQApAVF3wMcQ6d1ZfZ0JsRzaMUYj9e4U+naj6YEsFsFGOPp+pQYKXBf1bobQeeB7cPKPT3SUHxFqced722Hw==} engines: {node: '>= 16.0.0'} - '@parcel/namer-default@2.15.4': - resolution: {integrity: sha512-EXsoQ1S+5ZIfy8431E7F0vVS7bfH5JpZ+vFVcUpArJDkhmMG7T/eP6Kp9CXHLJmn7ki1x7iIVytrja0XXRQWBQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/namer-default@2.16.4': + resolution: {integrity: sha512-CE+0lFg881sJq575EXxj2lKUn81tsS5itpNUUErHxit195m3PExyAhoXM6ed/SXxwi+uv+T5FS/jjDLBNuUFDA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/node-resolver-core@3.6.4': - resolution: {integrity: sha512-g3+usMnr7pfRqbMAksOpNA7GJk7HUNW1Wxx7Shhp4w0K9JUdVrd2LRKwZxbqL7H9NqWtVvUOT9cZbMlDR6bO1w==} + '@parcel/node-resolver-core@3.7.4': + resolution: {integrity: sha512-b3VDG+um6IWW5CTod6M9hQsTX5mdIelKmam7mzxzgqg4j5hnycgTWqPMc9UxhYoUY/Q/PHfWepccNcKtvP5JiA==} engines: {node: '>= 16.0.0'} - '@parcel/optimizer-css@2.15.4': - resolution: {integrity: sha512-KQLuqwcvVFTNFtM+bzfvQivwunmhVAngmR4NiI8zQaykidYH28V8YkVAQmpbLbgoGad/UgG7grb0UshvnrQHpw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/optimizer-css@2.16.4': + resolution: {integrity: sha512-aqdXCtmvpcXYgJFGk2DtXF34wuM2TD1fZorKMrJdKB9sSkWVRs1tq6RAXQrbi0ZPDH9wfE/9An3YdkTex7RHuQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/optimizer-html@2.15.4': - resolution: {integrity: sha512-gBvt6RdDVMyO1Flvdtc8DxpxLgIXhaKuVXEjHdAP7sEW0SMdSd6r/tl6Plmcszig7sDwhDf6IsQOIvbzGHYZZg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/optimizer-html@2.16.4': + resolution: {integrity: sha512-vg/R2uuSni+NYYUUV8m+5bz8p5zBv8wc/nNleoBnGuCDwn7uaUwTZ8Gt9CjZO8jjG0xCLILoc/TW+e2FF3pfgQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/optimizer-image@2.15.4': - resolution: {integrity: sha512-M8fo7eEL6JRcmLhSX9pUUGU4MPrPrE9cMNcwIt3DQLnSvQ+sshhUDa6t9hKWeHHhs16BHvxrvksN2TIbkgHODQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/optimizer-image@2.16.4': + resolution: {integrity: sha512-2RV54WnvMYr18lxSx7Zlx/DXpJwMzOiPxDnoFyvaUoYutvgHO6chtcgFgh1Bvw/PoI95vYzlTkZ8QfUOk5A0JA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/optimizer-svg@2.15.4': - resolution: {integrity: sha512-pPdjRaLPqjAEROXIHLc6JWLLki56alhuUNbalhLqBCgktZrrq2dGCjBEVgxqRczc9D+ePCX/e/xci4tC0Tkcbg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/optimizer-svg@2.16.4': + resolution: {integrity: sha512-22+BqIffCrVErg8y2XwhasbTaFNn75OKXZ3KTDBIfOSAZKLUKs1iHfDXETzTRN7cVcS+Q36/6EHd7N/RA8i1fg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/optimizer-swc@2.15.4': - resolution: {integrity: sha512-2m5cYESVCq6AGx252eSTArZ1Oc1Ve4GBGL7NhvgbNqOthyXlc2qAed6rCkARrBd8pfEl5+2XHeK1ijDAZdIZ/A==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/optimizer-swc@2.16.4': + resolution: {integrity: sha512-+URqwnB6u1gqaLbG1O1DDApH+UVj4WCbK9No1fdxLBxQ9a84jyli25o1kK1hYB9Nb/JMyYNnEBfvYUW6RphOxw==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/package-manager@2.15.4': - resolution: {integrity: sha512-KZONBcEJ24moQdrpU0zJh9CYk3KKbpB5RUM70utAORem1yQKms+0Y4YED3njq6nZzbgwUN/Csc+powUHLZStvg==} + '@parcel/package-manager@2.16.4': + resolution: {integrity: sha512-obWv9gZgdnkT3Kd+fBkKjhdNEY7zfOP5gVaox5i4nQstVCaVnDlMv5FwLEXwehL+WbwEcGyEGGxOHHkAFKk7Cg==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/packager-css@2.15.4': - resolution: {integrity: sha512-bzSaNf+I5lmJFu95wSG2k7pGwjCDesZsV6Y9sozIL2LoSxqvkGhm/ABXAa3Ed7dLe3tSAEBzJcyqShQgLzSzuw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/packager-css@2.16.4': + resolution: {integrity: sha512-rWRtfiX+VVIOZvq64jpeNUKkvWAbnokfHQsk/js1s5jD4ViNQgPcNLiRaiIANjymqL6+dQqWvGUSW2a5FAZYfg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/packager-html@2.15.4': - resolution: {integrity: sha512-Uayux6A2Anm66Kmq22QhD0TuVp9LiRCMuPUzBd6n4ekNlG0Lzm6K3/okMkPG65nKbNjq5qcPscFWlDxggvjt2g==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/packager-html@2.16.4': + resolution: {integrity: sha512-AWo5f6SSqBsg2uWOsX0gPX8hCx2iE6GYLg2Z4/cDy2mPlwDICN8/bxItEztSZFmObi+ti26eetBKRDxAUivyIQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/packager-js@2.15.4': - resolution: {integrity: sha512-96bqhs1jyd28CfWQD+Yn8rSsd1ar7voHWyBtMLimsK+bDJIzL26Z7jWyRDwXRuLErYC01EoXRIRctxtmeRVJ2Q==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/packager-js@2.16.4': + resolution: {integrity: sha512-L2o39f/fhta+hxto7w8OTUKdstY+te5BmHZREckbQm0KTBg93BG7jB0bfoxLSZF0d8uuAYIVXjzeHNqha+du1g==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/packager-raw@2.15.4': - resolution: {integrity: sha512-CaSpDt5jjcO0SYCtsDhw6yfTDQuDFQ875H42W/ftvSQL7RfLRljPthnbdcy9chvKBbvRBQF+0z8Sxwehrd5hsA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/packager-raw@2.16.4': + resolution: {integrity: sha512-A9j60G9OmbTkEeE4WRMXCiErEprHLs9NkUlC4HXCxmSrPMOVaMaMva2LdejE3A9kujZqYtYfuc8+a+jN+Nro4w==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/packager-svg@2.15.4': - resolution: {integrity: sha512-qHsyOgnzoA2XGMLIYUnX79XAaV327VTWQvIzju/OmOjcff4o3uiEcNL8w9k3p2w2oPXOLoQ0THMiivoUQSM8GQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/packager-svg@2.16.4': + resolution: {integrity: sha512-LT9l7eInFrAZJ6w3mYzAUgDq3SIzYbbQyW46Dz26M9lJQbf6uCaATUTac3BEHegW0ikDuw4OOGHK41BVqeeusg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/packager-wasm@2.15.4': - resolution: {integrity: sha512-YPVij7zrBchtXr/y29P4uh3C/+19PMhhLibYF/8oMJKkFkeU3Uv00/XLm915vdBPrIPjgw0YuIfLzUKip1uGtg==} - engines: {node: '>=16.0.0', parcel: ^2.15.4} + '@parcel/packager-wasm@2.16.4': + resolution: {integrity: sha512-AY96Aqu/RpmaSZK2RGkIrZWjAperDw8DAlxLAiaP1D/RPVnikZtl5BmcUt/Wz3PrzG7/q9ZVqqKkWsLmhkjXZQ==} + engines: {node: '>=16.0.0', parcel: ^2.16.4} - '@parcel/plugin@2.15.4': - resolution: {integrity: sha512-XVehjmzk8ZDOFf/BXo26L76ZqCGNKIQcN2ngxAnq0KRY/WFanL8yLaL0qQq+c9whlu09hkGz1CuhFBLAIjJMYQ==} + '@parcel/plugin@2.16.4': + resolution: {integrity: sha512-aN2VQoRGC1eB41ZCDbPR/Sp0yKOxe31oemzPx1nJzOuebK2Q6FxSrJ9Bjj9j/YCaLzDtPwelsuLOazzVpXJ6qg==} engines: {node: '>= 16.0.0'} - '@parcel/profiler@2.15.4': - resolution: {integrity: sha512-ezVZlttUmQ1MQD5e8yVb07vSGYEFOB59Y/jaxL9mGSLZkVhMIIHe/7SuA+4qVAH8dlg6bslXRqlsunLMPEgPsg==} + '@parcel/profiler@2.16.4': + resolution: {integrity: sha512-R3JhfcnoReTv2sVFHPR2xKZvs3d3IRrBl9sWmAftbIJFwT4rU70/W7IdwfaJVkD/6PzHq9mcgOh1WKL4KAxPdA==} engines: {node: '>= 16.0.0'} - '@parcel/reporter-cli@2.15.4': - resolution: {integrity: sha512-us0HIwuJqpSguf+yi4n8foabVs26JGvRB/eSOf0KkRldxFciYLn4NJ8rt3Xm1zvxlDiSkD4v2n77u+ouIZ+AEQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/reporter-cli@2.16.4': + resolution: {integrity: sha512-DQx9TwcTZrDv828+tcwEi//xyW7OHTGzGX1+UEVxPp0mSzuOmDn0zfER8qNIqGr1i4D/FXhb5UJQDhGHV8mOpQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/reporter-dev-server@2.15.4': - resolution: {integrity: sha512-uCNeDyArNNXI9YThlxyTx7+5ZSxlewyUdyrLdDZCqvn8s1xNB9W8sUNVps7mJZQSc+2ZRk3wyDemURD67uJk/A==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/reporter-dev-server@2.16.4': + resolution: {integrity: sha512-YWvay25htQDifpDRJ0+yFh6xUxKnbfeJxYkPYyuXdxpEUhq4T0UWW0PbPCN/wFX7StgeUTXq5Poeo/+eys9m3w==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/reporter-tracer@2.15.4': - resolution: {integrity: sha512-9W1xsb/FtobCQ4z847nI6hFDaTZHLeThv/z05EF77R30RX2k+unG9ac5NQB1v4KLx09Bhfre32+sjYNReWxWlg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/reporter-tracer@2.16.4': + resolution: {integrity: sha512-JKnlXpPepak0/ZybmZn9JtyjJiDBWYrt7ZUlXQhQb0xzNcd/k+RqfwVkTKIwyFHsWtym0cwibkvsi2bWFzS7tw==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/resolver-default@2.15.4': - resolution: {integrity: sha512-4uKo3FFnubtIc4rM9jZiQQXpa1slawyRy5btJEfTFvbcnz0dm3WThLrsPDMfmPwNr9F/n5x8yzDLI6/fZ/elgA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/resolver-default@2.16.4': + resolution: {integrity: sha512-wJe9XQS0hn/t32pntQpJbls3ZL8mGVVhK9L7s7BTmZT9ufnvP2nif1psJz/nbgnP9LF6mLSk43OdMJKpoStsjQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/runtime-browser-hmr@2.15.4': - resolution: {integrity: sha512-KRGzbxDUOQUkrJKxxY0WyU7oVaa9TvWTRlpuGJXzQJs/hw8vkAAoAm8+ptpypvBC8LnxFHzGbSyHPfL8C8MQOw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/runtime-browser-hmr@2.16.4': + resolution: {integrity: sha512-asx7p3NjUSfibI3bC7+8+jUIGHWVk2Zuq9SjJGCGDt+auT9A4uSGljnsk1BWWPqqZ0WILubq4czSAqm0+wt4cw==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/runtime-js@2.15.4': - resolution: {integrity: sha512-zNRK+693CMkYiA0ckjPOmz+JVHD9bVzp27itcMyuDH6l/Or8m09RgCC4DIdIxBqiplsDSe39DwEc5X7b0vvcjw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/runtime-js@2.16.4': + resolution: {integrity: sha512-gUKmsjg+PULQBu2QbX0QKll9tXSqHPO8NrfxHwWb2lz5xDKDos1oV0I7BoMWbHhUHkoToXZrm654oGViujtVUA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/runtime-rsc@2.15.4': - resolution: {integrity: sha512-yHc4HEwzCQYLqa6Q1WtZ8xJeaDAk0p2i0b3ABq2I+izmRjer4jertlsEwh9mf9Z1eUGtJobdGYzl8Ai1VfhC3g==} - engines: {node: '>= 12.0.0', parcel: ^2.15.4} + '@parcel/runtime-rsc@2.16.4': + resolution: {integrity: sha512-CHkotYE/cNiUjJmrc5FD9YhlFp1UF5wMNNJmoWaL40eBzsqcaV0sSn5V3bNapwewn3wrMYgdPgvOTHfaZaG73A==} + engines: {node: '>= 12.0.0', parcel: ^2.16.4} - '@parcel/runtime-service-worker@2.15.4': - resolution: {integrity: sha512-NGq/wS34GIVzo2ZURBjCqgHV+PU7eTcngCzmmk/wrCEeWnr13ld+CAIxVZoqyNJwYsF6VQanrjSM2/LhCXEdyA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/runtime-service-worker@2.16.4': + resolution: {integrity: sha512-FT0Q58bf5Re+dq5cL2XHbxqHHFZco6qtRijeVpT3TSPMRPlniMArypSytTeZzVNL7h/hxjWsNu7fRuC0yLB5hA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/rust-darwin-arm64@2.15.4': - resolution: {integrity: sha512-cEpNDeEtvM5Nhj0QLN95QbcZ9yY6Z5W3+2OeHvnojEAP8Rp1XGzqVTTZdlyKyN1KTiyfzIOiQJCiEcr+kMc5Nw==} + '@parcel/rust-darwin-arm64@2.16.4': + resolution: {integrity: sha512-P3Se36H9EO1fOlwXqQNQ+RsVKTGn5ztRSUGbLcT8ba6oOMmU1w7J4R810GgsCbwCuF10TJNUMkuD3Q2Sz15Q3Q==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@parcel/rust-darwin-x64@2.15.4': - resolution: {integrity: sha512-jL9i13sXKeBXXz8Z3BNYoScPOi+ljBA0ubAE3PN5DCoAA6wS4/FsAiRSIUw+3uxqASBD7+JvaT5sDUga1Xft5g==} + '@parcel/rust-darwin-x64@2.16.4': + resolution: {integrity: sha512-8aNKNyPIx3EthYpmVJevIdHmFsOApXAEYGi3HU69jTxLgSIfyEHDdGE9lEsMvhSrd/SSo4/euAtiV+pqK04wnA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@parcel/rust-linux-arm-gnueabihf@2.15.4': - resolution: {integrity: sha512-c8HpVdDugCutlMILoOlkTioih9HGJpQrzS2G3cg/O1a5ZTacooGf3eGJGoh6dUBEv9WEaEb6zsTRwFv2BgtZcA==} + '@parcel/rust-linux-arm-gnueabihf@2.16.4': + resolution: {integrity: sha512-QrvqiSHaWRLc0JBHgUHVvDthfWSkA6AFN+ikV1UGENv4j2r/QgvuwJiG0VHrsL6pH5dRqj0vvngHzEgguke9DA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@parcel/rust-linux-arm64-gnu@2.15.4': - resolution: {integrity: sha512-Wcfs/JY4FnuLxQaU+VX2rI4j376Qo2LkZmq4zp9frnsajaAqmloVQfnbUkdnQPEL4I38eHXerzBX3LoXSxnZKA==} + '@parcel/rust-linux-arm64-gnu@2.16.4': + resolution: {integrity: sha512-f3gBWQHLHRUajNZi3SMmDQiEx54RoRbXtZYQNuBQy7+NolfFcgb1ik3QhkT7xovuTF/LBmaqP3UFy0PxvR/iwQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] - '@parcel/rust-linux-arm64-musl@2.15.4': - resolution: {integrity: sha512-xf9HxosEn3dU5M0zDSXqBaG8rEjLThRdTYqpkxHW/qQGzy0Se+/ntg8PeDHsSG5E9OK8xrcKH46Lhaw0QBF/Zw==} + '@parcel/rust-linux-arm64-musl@2.16.4': + resolution: {integrity: sha512-cwml18RNKsBwHyZnrZg4jpecXkWjaY/mCArocWUxkFXjjB97L56QWQM9W86f2/Y3HcFcnIGJwx1SDDKJrV6OIA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] - '@parcel/rust-linux-x64-gnu@2.15.4': - resolution: {integrity: sha512-RigXVCFj6h0AXmkuxU61rfgYuW+PXBR6qSkR2I20yKnAXoMfxLaZy9YJ3sAPMEjT9zXgzGAX+3syItMF+bRjaw==} + '@parcel/rust-linux-x64-gnu@2.16.4': + resolution: {integrity: sha512-0xIjQaN8hiG0F9R8coPYidHslDIrbfOS/qFy5GJNbGA3S49h61wZRBMQqa7JFW4+2T8R0J9j0SKHhLXpbLXrIg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] - '@parcel/rust-linux-x64-musl@2.15.4': - resolution: {integrity: sha512-tHlRgonSr5ca8OvhbGzZUggCgCOirRz5dHhPSCm4ajMxeDMamwprq6lKy0sCNTXht4TXIEyugBcfEuRKEeVIBw==} + '@parcel/rust-linux-x64-musl@2.16.4': + resolution: {integrity: sha512-fYn21GIecHK9RoZPKwT9NOwxwl3Gy3RYPR6zvsUi0+hpFo19Ph9EzFXN3lT8Pi5KiwQMCU4rsLb5HoWOBM1FeA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] - '@parcel/rust-win32-x64-msvc@2.15.4': - resolution: {integrity: sha512-YsX6vMl/bfyxqZSN7yiaZQKLoJKELSZYcvg8gIv4CF1xkaTdmfr6gvq2iCyoV+bwrodNohN4Xfl8r7Wniu1/UA==} + '@parcel/rust-win32-x64-msvc@2.16.4': + resolution: {integrity: sha512-TcpWC3I1mJpfP2++018lgvM7UX0P8IrzNxceBTHUKEIDMwmAYrUKAQFiaU0j1Ldqk6yP8SPZD3cvphumsYpJOQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@parcel/rust@2.15.4': - resolution: {integrity: sha512-OxOux8z8YEYg23+15uMmYaloFp3x1RwcliBay6HqxUW7RTmtI1/z+xd8AtienCckACD60gvDGy04LjgbEGdJVg==} + '@parcel/rust@2.16.4': + resolution: {integrity: sha512-RBMKt9rCdv6jr4vXG6LmHtxzO5TuhQvXo1kSoSIF7fURRZ81D1jzBtLxwLmfxCPsofJNqWwdhy5vIvisX+TLlQ==} engines: {node: '>= 16.0.0'} peerDependencies: napi-wasm: ^1.1.2 @@ -325,225 +329,235 @@ packages: resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} engines: {node: ^12.18.3 || >=14} - '@parcel/transformer-babel@2.15.4': - resolution: {integrity: sha512-rb4nqZcTLkLD3nvuYJ9wwNb8x6cajBK2l6csdYMLEI4516SkIzkO/gs2cZ9M5q+CMhxAqpdEnrwektbOtQQasg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-babel@2.16.4': + resolution: {integrity: sha512-CMDUOQYX7+cmeyHxHSFnoPcwvXNL7rRFE+Q06uVFzsYYiVhbwGF/1J5Bx4cW3Froumqla4YTytTsEteJEybkdA==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-css@2.15.4': - resolution: {integrity: sha512-6tVwSJsOssXgcB5XMAQGsexAffoBEi8GVql3YQqzI1EwVYs9zr+B5mfbesb4aWcegR02w99NHJYFP9CrOr3SWw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-css@2.16.4': + resolution: {integrity: sha512-VG/+DbDci2HKe20GFRDs65ZQf5GUFfnmZAa1BhVl/MO+ijT3XC3eoVUy5cExRkq4VLcPY4ytL0g/1T2D6x7lBQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-html@2.15.4': - resolution: {integrity: sha512-gzYPbbyEuV8nzPojw86eD5Kf93AYUWcY8lu33gu0XHROJH7mq5MAwPwtb/U+EfpeCd0/oKbLzA2mkQksM1NncQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-html@2.16.4': + resolution: {integrity: sha512-w6JErYTeNS+KAzUAER18NHFIFFvxiLGd4Fht1UYcb/FDjJdLAMB/FljyEs0Rto/WAhZ2D0MuSL25HQh837R62g==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-image@2.15.4': - resolution: {integrity: sha512-KOVwj2gKjUybuzHwarC/YVqRf3r2BD4/2ysckozj6DIji/bq3fd2rE9yqxWXO+zt918PsOSTzMKwRnaseaXLKQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-image@2.16.4': + resolution: {integrity: sha512-ZzIn3KvvRqMfcect4Dy+57C9XoQXZhpVJKBdQWMp9wM1qJEgsVgGDcaSBYCs/UYSKMRMP6Wm20pKCt408RkQzg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/transformer-js@2.15.4': - resolution: {integrity: sha512-HX76PalPjqCLmXJnuSeMr2km8WlnUsW8oaRZ6FuZtSo9QD8BqIcwKGxSbIy9JHkObBgmrMOVpGtYrJM4/BlYbg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-js@2.16.4': + resolution: {integrity: sha512-FD2fdO6URwAGBPidb3x1dDgLBt972mko0LelcSU05aC/pcKaV9mbCtINbPul1MlStzkxDelhuImcCYIyerheVQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 - '@parcel/transformer-json@2.15.4': - resolution: {integrity: sha512-1ASeOSH3gPeaXyy/TZ7ce2TOfJ3ZeK5SBnDs+MM8LFcQsTwdRJKjX/4Qq9RgtMRryYAGHgMa09Gvp9FuFRyd+w==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-json@2.16.4': + resolution: {integrity: sha512-pB3ZNqgokdkBCJ+4G0BrPYcIkyM9K1HVk0GvjzcLEFDKsoAp8BGEM68FzagFM/nVq9anYTshIaoh349GK0M/bg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-node@2.15.4': - resolution: {integrity: sha512-zV5jvZA971eQMcFtaWZkW1UfAH/G6XVM/87oJ2B4ip9o9aKUWIl296rrfg2xWxUQyPhy11B17CJ6b8NgieqqrQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-node@2.16.4': + resolution: {integrity: sha512-7t43CPGfMJk1LqFokwxHSsRi+kKC2QvDXaMtqiMShmk50LCwn81WgzuFvNhMwf6lSiBihWupGwF3Fqksg+aisg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-postcss@2.15.4': - resolution: {integrity: sha512-cNueSpOj3ulmMX85xr9clh/t0+mzVE+Q3H7Cf/OammqUkG/xjmilq4q7ZTgQFyUtUdWpE9LWWHojbJuz6k2Ulw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-postcss@2.16.4': + resolution: {integrity: sha512-jfmh9ho03H+qwz9S1b/a/oaOmgfMovtHKYDweIGMjKULKIee3AFRqo8RZIOuUMjDuqHWK8SqQmjery4syFV3Xw==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-posthtml@2.15.4': - resolution: {integrity: sha512-dETI+CeKMwu5Dpvu8BrQtex6nwzbNWKQkXseiM5x6+Wf3j9RD2NVpAMBRMjLkw1XlC9Whz1egxLSgKlMKbjg0w==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-posthtml@2.16.4': + resolution: {integrity: sha512-+GXsmGx1L25KQGQnwclgEuQe1t4QU+IoDkgN+Ikj+EnQCOWG4/ts2VpMBeqP5F18ZT4cCSRafj6317o/2lSGJg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-raw@2.15.4': - resolution: {integrity: sha512-pY2j09UCW2v1fwQtVLlCztSdPOxhq0YcWmTHCk/mRp8zuUR+eyHgsz48FrUxRF7cr/EBjc0zlFcregRMRcaTMg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-raw@2.16.4': + resolution: {integrity: sha512-7WDUPq+bW11G9jKxaQIVL+NPGolV99oq/GXhpjYip0SaGaLzRCW7gEk60cftuk0O7MsDaX5jcAJm3G/AX+LJKg==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-react-refresh-wrap@2.15.4': - resolution: {integrity: sha512-MgoQrV8+BVjrczAns5ZZbTERGB3/U4MaCBmbg3CuiTiIyS8IJQnGi+OhYRdKAB4NlsgpMZ5T2JrRbQUIm9MM8Q==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-react-refresh-wrap@2.16.4': + resolution: {integrity: sha512-MiLNZrsGQJTANKKa4lzZyUbGj/en0Hms474mMdQkCBFg6GmjfmXwaMMgtTfPA3ZwSp2+3LeObCyca/f9B2gBZQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-sass@2.15.4': - resolution: {integrity: sha512-o7rPDdId5tpx/riTzu0O3zpyt24ORrVdAxW6k2YN2xGrvStfnQHxKjrSiEFDUMMzuikcW7Ed+uqPk046DK3m8w==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-sass@2.16.4': + resolution: {integrity: sha512-TvYZf7dwgtIVHcxkmOlIz0e28Ec7T6z0Jhzu+WcnFSonnhyrvKuqAxy7QV5EGc6O4qvDWwAQV1lvaLU0te+mQQ==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/transformer-svg@2.15.4': - resolution: {integrity: sha512-Q22e0VRbx62VXFlvJWIlc8ihlLaPQgtnAZz5E1/+ojiNb+k0PmIRjNJclVWPF6IdCsLO5tnGfUOaXe2OnZz28Q==} - engines: {node: '>= 16.0.0', parcel: ^2.15.4} + '@parcel/transformer-svg@2.16.4': + resolution: {integrity: sha512-0dm4cQr/WpfQP6N0xjFtwdLTxcONDfoLgTOMk4eNUWydHipSgmLtvUk/nOc/FWkwztRScfAObtZXOiPOd3Oy9A==} + engines: {node: '>= 16.0.0', parcel: ^2.16.4} - '@parcel/types-internal@2.15.4': - resolution: {integrity: sha512-kl5QEZ8PTWRvMkwmk7IG3VpP/5/MSGwt9Nrj9ctXLdZkDdXZpK7IbXAthLQ4zrByMaqZULL2IyDuBqBgfuAqlQ==} + '@parcel/types-internal@2.16.4': + resolution: {integrity: sha512-PE6Qmt5cjzBxX+6MPLiF7r+twoC+V9Skt3zyuBQ+H1c0i9o07Bbz2NKX10nvlPukfmW6Fu/1RvTLkzBZR1bU6A==} - '@parcel/types@2.15.4': - resolution: {integrity: sha512-fS3UMMinLtzn/NTSx/qx38saBgRniylldh0XZEUcGeME4D2Llu/QlLv+YZ/LJqrFci3fPRM+YAn2K+JT/u+/0w==} + '@parcel/types@2.16.4': + resolution: {integrity: sha512-ctx4mBskZHXeDVHg4OjMwx18jfYH9BzI/7yqbDQVGvd5lyA+/oVVzYdpele2J2i2sSaJ87cA8nb57GDQ8kHAqA==} - '@parcel/utils@2.15.4': - resolution: {integrity: sha512-29m09sfPx0GHnmy1kkZ5XezprepdFGKKKUEJkyiYA4ERf55jjdnU2/GP4sWlZXxjh2Y+JFoCAFlCamEClq/8eA==} + '@parcel/utils@2.16.4': + resolution: {integrity: sha512-lkmxQHcHyOWZLbV8t+h2CGZIkPiBurLm/TS5wNT7+tq0qt9KbVwL7FP2K93TbXhLMGTmpI79Bf3qKniPM167Mw==} engines: {node: '>= 16.0.0'} - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} - '@parcel/workers@2.15.4': - resolution: {integrity: sha512-wZ/5/mfjs5aeqhXY0c6fwuaBFeNpOXoOq2CKPSMDXt+GX2u/9/1bpVxN9XeGTAJO+ZD++CLq0hyzTnIHy58nyw==} + '@parcel/workers@2.16.4': + resolution: {integrity: sha512-dkBEWqnHXDZnRbTZouNt4uEGIslJT+V0c8OH1MPOfjISp1ucD6/u9ET8k9d/PxS9h1hL53og0SpBuuSEPLDl6A==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.4 + '@parcel/core': ^2.16.4 '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@swc/core-darwin-arm64@1.12.11': - resolution: {integrity: sha512-J19Jj9Y5x/N0loExH7W0OI9OwwoVyxutDdkyq1o/kgXyBqmmzV7Y/Q9QekI2Fm/qc5mNeAdP7aj4boY4AY/JPw==} + '@swc/core-darwin-arm64@1.15.18': + resolution: {integrity: sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.12.11': - resolution: {integrity: sha512-PTuUQrfStQ6cjW+uprGO2lpQHy84/l0v+GqRqq8s/jdK55rFRjMfCeyf6FAR0l6saO5oNOQl+zWR1aNpj8pMQw==} + '@swc/core-darwin-x64@1.15.18': + resolution: {integrity: sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.12.11': - resolution: {integrity: sha512-poxBq152HsupOtnZilenvHmxZ9a8SRj4LtfxUnkMDNOGrZR9oxbQNwEzNKfi3RXEcXz+P8c0Rai1ubBazXv8oQ==} + '@swc/core-linux-arm-gnueabihf@1.15.18': + resolution: {integrity: sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.12.11': - resolution: {integrity: sha512-y1HNamR/D0Hc8xIE910ysyLe269UYiGaQPoLjQS0phzWFfWdMj9bHM++oydVXZ4RSWycO7KyJ3uvw4NilvyMKQ==} + '@swc/core-linux-arm64-gnu@1.15.18': + resolution: {integrity: sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [glibc] - '@swc/core-linux-arm64-musl@1.12.11': - resolution: {integrity: sha512-LlBxPh/32pyQsu2emMEOFRm7poEFLsw12Y1mPY7FWZiZeptomKSOSHRzKDz9EolMiV4qhK1caP1lvW4vminYgQ==} + '@swc/core-linux-arm64-musl@1.15.18': + resolution: {integrity: sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [musl] - '@swc/core-linux-x64-gnu@1.12.11': - resolution: {integrity: sha512-bOjiZB8O/1AzHkzjge1jqX62HGRIpOHqFUrGPfAln/NC6NR+Z2A78u3ixV7k5KesWZFhCV0YVGJL+qToL27myA==} + '@swc/core-linux-x64-gnu@1.15.18': + resolution: {integrity: sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [glibc] - '@swc/core-linux-x64-musl@1.12.11': - resolution: {integrity: sha512-4dzAtbT/m3/UjF045+33gLiHd8aSXJDoqof7gTtu4q0ZyAf7XJ3HHspz+/AvOJLVo4FHHdFcdXhmo/zi1nFn8A==} + '@swc/core-linux-x64-musl@1.15.18': + resolution: {integrity: sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [musl] - '@swc/core-win32-arm64-msvc@1.12.11': - resolution: {integrity: sha512-h8HiwBZErKvCAmjW92JvQp0iOqm6bncU4ac5jxBGkRApabpUenNJcj3h2g5O6GL5K6T9/WhnXE5gyq/s1fhPQg==} + '@swc/core-win32-arm64-msvc@1.15.18': + resolution: {integrity: sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.12.11': - resolution: {integrity: sha512-1pwr325mXRNUhxTtXmx1IokV5SiRL+6iDvnt3FRXj+X5UvXXKtg2zeyftk+03u8v8v8WUr5I32hIypVJPTNxNg==} + '@swc/core-win32-ia32-msvc@1.15.18': + resolution: {integrity: sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.12.11': - resolution: {integrity: sha512-5gggWo690Gvs7XiPxAmb5tHwzB9RTVXUV7AWoGb6bmyUd1OXYaebQF0HAOtade5jIoNhfQMQJ7QReRgt/d2jAA==} + '@swc/core-win32-x64-msvc@1.15.18': + resolution: {integrity: sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.12.11': - resolution: {integrity: sha512-P3GM+0lqjFctcp5HhR9mOcvLSX3SptI9L1aux0Fuvgt8oH4f92rCUrkodAa0U2ktmdjcyIiG37xg2mb/dSCYSA==} + '@swc/core@1.15.18': + resolution: {integrity: sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -554,11 +568,11 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.19': + resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==} - '@swc/types@0.1.23': - resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -567,25 +581,26 @@ packages: base-x@3.0.11: resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} + baseline-browser-mapping@2.10.0: + resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + engines: {node: '>=6.0.0'} + hasBin: true + bootstrap-icons@1.13.1: resolution: {integrity: sha512-ijombt4v6bv5CLeXvRWKy7CuM3TRTuPEuGaGKvTV5cz65rQSY8RQ2JcHt6b90cBBAC7s8fsf2EkQDldzCoXUjw==} - bootstrap@5.3.7: - resolution: {integrity: sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==} + bootstrap@5.3.8: + resolution: {integrity: sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==} peerDependencies: '@popperjs/core': ^2.11.8 - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001777: + resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -619,8 +634,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} dotenv-expand@11.0.7: @@ -631,17 +646,13 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - electron-to-chromium@1.5.182: - resolution: {integrity: sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==} + electron-to-chromium@1.5.307: + resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - get-port@4.2.0: resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} engines: {node: '>=6'} @@ -654,8 +665,8 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -665,10 +676,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - jquery@3.7.1: resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} @@ -677,84 +684,90 @@ packages: engines: {node: '>=6'} hasBin: true - lightningcss-darwin-arm64@1.30.1: - resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.1: - resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.1: - resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.1: - resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.1: - resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] - lightningcss-linux-arm64-musl@1.30.1: - resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] - lightningcss-linux-x64-gnu@1.30.1: - resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] - lightningcss-linux-x64-musl@1.30.1: - resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] - lightningcss-win32-arm64-msvc@1.30.1: - resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.1: - resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.1: - resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} lmdb@2.8.5: resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} hasBin: true - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - msgpackr-extract@3.0.3: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.4: - resolution: {integrity: sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==} + msgpackr@1.11.8: + resolution: {integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==} node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} @@ -770,26 +783,26 @@ packages: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - ordered-binary@1.6.0: - resolution: {integrity: sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==} + ordered-binary@1.6.1: + resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} - parcel@2.15.4: - resolution: {integrity: sha512-eZHQ/omuQ7yBYB9XezyzSqhc826oy/uhloCNiej1CTZ+twAqJVtp4MRvTGMcivKhE+WE8QkYD5XkJHLLQsJQcg==} + parcel@2.16.4: + resolution: {integrity: sha512-RQlrqs4ujYNJpTQi+dITqPKNhRWEqpjPd1YBcGp50Wy3FcJHpwu0/iRm7XWz2dKU/Bwp2qCcVYPIeEDYi2uOUw==} engines: {node: '>= 16.0.0'} hasBin: true picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -799,8 +812,8 @@ packages: peerDependencies: prettier: ^3.0.0 - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -818,13 +831,13 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - sass@1.89.2: - resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==} + sass@1.97.3: + resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} engines: {node: '>=14.0.0'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -840,10 +853,6 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -851,8 +860,8 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -866,11 +875,11 @@ packages: snapshots: - '@lezer/common@1.2.3': {} + '@lezer/common@1.5.1': {} - '@lezer/lr@1.4.2': + '@lezer/lr@1.4.8': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.1 '@lmdb/lmdb-darwin-arm64@2.8.5': optional: true @@ -892,8 +901,8 @@ snapshots: '@mischnic/json-sourcemap@0.1.1': dependencies: - '@lezer/common': 1.2.3 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.5.1 + '@lezer/lr': 1.4.8 json5: 2.2.3 '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -914,719 +923,719 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@parcel/bundler-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/bundler-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/graph': 3.5.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/graph': 3.6.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/cache@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/cache@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/logger': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/logger': 2.16.4 + '@parcel/utils': 2.16.4 lmdb: 2.8.5 transitivePeerDependencies: - napi-wasm - '@parcel/codeframe@2.15.4': + '@parcel/codeframe@2.16.4': dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/compressor-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/config-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + '@parcel/config-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)': dependencies: - '@parcel/bundler-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/compressor-raw': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/namer-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/optimizer-css': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/optimizer-html': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/optimizer-image': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/optimizer-svg': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/optimizer-swc': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/packager-css': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/packager-html': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/packager-js': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/packager-raw': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/packager-svg': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/packager-wasm': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/reporter-dev-server': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/resolver-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/runtime-browser-hmr': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/runtime-js': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/runtime-rsc': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/runtime-service-worker': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-babel': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-css': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-html': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-image': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-js': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-json': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-node': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-postcss': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-posthtml': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-raw': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-react-refresh-wrap': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/transformer-svg': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/bundler-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/compressor-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/namer-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/optimizer-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/optimizer-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/optimizer-image': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/optimizer-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/optimizer-swc': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19) + '@parcel/packager-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/packager-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/packager-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/packager-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/packager-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/packager-wasm': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/reporter-dev-server': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/resolver-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/runtime-browser-hmr': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/runtime-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/runtime-rsc': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/runtime-service-worker': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-babel': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-css': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-html': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-image': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-js': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-json': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-node': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-postcss': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-posthtml': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-raw': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-react-refresh-wrap': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/transformer-svg': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/core@2.15.4(@swc/helpers@0.5.17)': + '@parcel/core@2.16.4(@swc/helpers@0.5.19)': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/diagnostic': 2.15.4 - '@parcel/events': 2.15.4 - '@parcel/feature-flags': 2.15.4 - '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/graph': 3.5.4 - '@parcel/logger': 2.15.4 - '@parcel/package-manager': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/profiler': 2.15.4 - '@parcel/rust': 2.15.4 + '@parcel/cache': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/diagnostic': 2.16.4 + '@parcel/events': 2.16.4 + '@parcel/feature-flags': 2.16.4 + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/graph': 3.6.4 + '@parcel/logger': 2.16.4 + '@parcel/package-manager': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/profiler': 2.16.4 + '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) base-x: 3.0.11 - browserslist: 4.25.1 + browserslist: 4.28.1 clone: 2.1.2 dotenv: 16.6.1 dotenv-expand: 11.0.7 json5: 2.2.3 - msgpackr: 1.11.4 + msgpackr: 1.11.8 nullthrows: 1.1.1 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/diagnostic@2.15.4': + '@parcel/diagnostic@2.16.4': dependencies: '@mischnic/json-sourcemap': 0.1.1 nullthrows: 1.1.1 - '@parcel/error-overlay@2.15.4': {} + '@parcel/error-overlay@2.16.4': {} - '@parcel/events@2.15.4': {} + '@parcel/events@2.16.4': {} - '@parcel/feature-flags@2.15.4': {} + '@parcel/feature-flags@2.16.4': {} - '@parcel/fs@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/fs@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/feature-flags': 2.15.4 - '@parcel/rust': 2.15.4 - '@parcel/types-internal': 2.15.4 - '@parcel/utils': 2.15.4 - '@parcel/watcher': 2.5.1 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/feature-flags': 2.16.4 + '@parcel/rust': 2.16.4 + '@parcel/types-internal': 2.16.4 + '@parcel/utils': 2.16.4 + '@parcel/watcher': 2.5.6 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - napi-wasm - '@parcel/graph@3.5.4': + '@parcel/graph@3.6.4': dependencies: - '@parcel/feature-flags': 2.15.4 + '@parcel/feature-flags': 2.16.4 nullthrows: 1.1.1 - '@parcel/logger@2.15.4': + '@parcel/logger@2.16.4': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/events': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/events': 2.16.4 - '@parcel/markdown-ansi@2.15.4': + '@parcel/markdown-ansi@2.16.4': dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/namer-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/node-resolver-core@3.6.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/node-resolver-core@3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/diagnostic': 2.15.4 - '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 nullthrows: 1.1.1 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-css@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/optimizer-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 - browserslist: 4.25.1 - lightningcss: 1.30.1 + '@parcel/utils': 2.16.4 + browserslist: 4.28.1 + lightningcss: 1.31.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-html@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/optimizer-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-image@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/optimizer-image@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - napi-wasm - '@parcel/optimizer-svg@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/optimizer-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-swc@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + '@parcel/optimizer-swc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 - '@swc/core': 1.12.11(@swc/helpers@0.5.17) + '@parcel/utils': 2.16.4 + '@swc/core': 1.15.18(@swc/helpers@0.5.19) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - napi-wasm - '@parcel/package-manager@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + '@parcel/package-manager@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.4 - '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/logger': 2.15.4 - '@parcel/node-resolver-core': 3.6.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@swc/core': 1.12.11(@swc/helpers@0.5.17) - semver: 7.7.2 + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/diagnostic': 2.16.4 + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/logger': 2.16.4 + '@parcel/node-resolver-core': 3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@swc/core': 1.15.18(@swc/helpers@0.5.19) + semver: 7.7.4 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/packager-css@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/packager-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 - lightningcss: 1.30.1 + '@parcel/utils': 2.16.4 + lightningcss: 1.31.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-html@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/packager-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-js@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/packager-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 globals: 13.24.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-raw@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/packager-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-svg@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/packager-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-wasm@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/packager-wasm@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/plugin@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/plugin@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/profiler@2.15.4': + '@parcel/profiler@2.16.4': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/events': 2.15.4 - '@parcel/types-internal': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/events': 2.16.4 + '@parcel/types-internal': 2.16.4 chrome-trace-event: 1.0.4 - '@parcel/reporter-cli@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/reporter-cli@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/types': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 chalk: 4.1.2 term-size: 2.2.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/reporter-dev-server@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/reporter-dev-server@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/codeframe': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/codeframe': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/reporter-tracer@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/reporter-tracer@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 chrome-trace-event: 1.0.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/resolver-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/resolver-default@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/node-resolver-core': 3.6.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/node-resolver-core': 3.7.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-browser-hmr@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/runtime-browser-hmr@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-js@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/runtime-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-rsc@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/runtime-rsc@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-service-worker@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/runtime-service-worker@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/rust-darwin-arm64@2.15.4': + '@parcel/rust-darwin-arm64@2.16.4': optional: true - '@parcel/rust-darwin-x64@2.15.4': + '@parcel/rust-darwin-x64@2.16.4': optional: true - '@parcel/rust-linux-arm-gnueabihf@2.15.4': + '@parcel/rust-linux-arm-gnueabihf@2.16.4': optional: true - '@parcel/rust-linux-arm64-gnu@2.15.4': + '@parcel/rust-linux-arm64-gnu@2.16.4': optional: true - '@parcel/rust-linux-arm64-musl@2.15.4': + '@parcel/rust-linux-arm64-musl@2.16.4': optional: true - '@parcel/rust-linux-x64-gnu@2.15.4': + '@parcel/rust-linux-x64-gnu@2.16.4': optional: true - '@parcel/rust-linux-x64-musl@2.15.4': + '@parcel/rust-linux-x64-musl@2.16.4': optional: true - '@parcel/rust-win32-x64-msvc@2.15.4': + '@parcel/rust-win32-x64-msvc@2.16.4': optional: true - '@parcel/rust@2.15.4': + '@parcel/rust@2.16.4': optionalDependencies: - '@parcel/rust-darwin-arm64': 2.15.4 - '@parcel/rust-darwin-x64': 2.15.4 - '@parcel/rust-linux-arm-gnueabihf': 2.15.4 - '@parcel/rust-linux-arm64-gnu': 2.15.4 - '@parcel/rust-linux-arm64-musl': 2.15.4 - '@parcel/rust-linux-x64-gnu': 2.15.4 - '@parcel/rust-linux-x64-musl': 2.15.4 - '@parcel/rust-win32-x64-msvc': 2.15.4 + '@parcel/rust-darwin-arm64': 2.16.4 + '@parcel/rust-darwin-x64': 2.16.4 + '@parcel/rust-linux-arm-gnueabihf': 2.16.4 + '@parcel/rust-linux-arm64-gnu': 2.16.4 + '@parcel/rust-linux-arm64-musl': 2.16.4 + '@parcel/rust-linux-x64-gnu': 2.16.4 + '@parcel/rust-linux-x64-musl': 2.16.4 + '@parcel/rust-win32-x64-msvc': 2.16.4 '@parcel/source-map@2.1.1': dependencies: detect-libc: 1.0.3 - '@parcel/transformer-babel@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-babel@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 - browserslist: 4.25.1 + '@parcel/utils': 2.16.4 + browserslist: 4.28.1 json5: 2.2.3 nullthrows: 1.1.1 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-css@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-css@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 - browserslist: 4.25.1 - lightningcss: 1.30.1 + '@parcel/utils': 2.16.4 + browserslist: 4.28.1 + lightningcss: 1.31.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-html@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-html@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-image@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-image@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm - '@parcel/transformer-js@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-js@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.4 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@swc/helpers': 0.5.17 - browserslist: 4.25.1 + '@parcel/utils': 2.16.4 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@swc/helpers': 0.5.19 + browserslist: 4.28.1 nullthrows: 1.1.1 regenerator-runtime: 0.14.1 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - napi-wasm - '@parcel/transformer-json@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-json@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-node@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-node@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-postcss@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-postcss@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 + '@parcel/utils': 2.16.4 clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-posthtml@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-posthtml@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-raw@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-raw@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-react-refresh-wrap@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-react-refresh-wrap@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/error-overlay': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/error-overlay': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 react-refresh: 0.16.0 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-sass@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-sass@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) '@parcel/source-map': 2.1.1 - sass: 1.89.2 + sass: 1.97.3 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-svg@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/transformer-svg@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/rust': 2.16.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/types-internal@2.15.4': + '@parcel/types-internal@2.16.4': dependencies: - '@parcel/diagnostic': 2.15.4 - '@parcel/feature-flags': 2.15.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/feature-flags': 2.16.4 '@parcel/source-map': 2.1.1 utility-types: 3.11.0 - '@parcel/types@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/types@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/types-internal': 2.15.4 - '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/types-internal': 2.16.4 + '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/utils@2.15.4': + '@parcel/utils@2.16.4': dependencies: - '@parcel/codeframe': 2.15.4 - '@parcel/diagnostic': 2.15.4 - '@parcel/logger': 2.15.4 - '@parcel/markdown-ansi': 2.15.4 - '@parcel/rust': 2.15.4 + '@parcel/codeframe': 2.16.4 + '@parcel/diagnostic': 2.16.4 + '@parcel/logger': 2.16.4 + '@parcel/markdown-ansi': 2.16.4 + '@parcel/rust': 2.16.4 '@parcel/source-map': 2.1.1 chalk: 4.1.2 nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm - '@parcel/watcher-android-arm64@2.5.1': + '@parcel/watcher-android-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + '@parcel/watcher-darwin-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-x64@2.5.1': + '@parcel/watcher-darwin-x64@2.5.6': optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + '@parcel/watcher-freebsd-x64@2.5.6': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + '@parcel/watcher-linux-arm-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + '@parcel/watcher-linux-arm-musl@2.5.6': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + '@parcel/watcher-linux-arm64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + '@parcel/watcher-linux-arm64-musl@2.5.6': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + '@parcel/watcher-linux-x64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + '@parcel/watcher-linux-x64-musl@2.5.6': optional: true - '@parcel/watcher-win32-arm64@2.5.1': + '@parcel/watcher-win32-arm64@2.5.6': optional: true - '@parcel/watcher-win32-ia32@2.5.1': + '@parcel/watcher-win32-ia32@2.5.6': optional: true - '@parcel/watcher-win32-x64@2.5.1': + '@parcel/watcher-win32-x64@2.5.6': optional: true - '@parcel/watcher@2.5.1': + '@parcel/watcher@2.5.6': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 node-addon-api: 7.1.1 + picomatch: 4.0.3 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 - '@parcel/workers@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': + '@parcel/workers@2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))': dependencies: - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.4 - '@parcel/logger': 2.15.4 - '@parcel/profiler': 2.15.4 - '@parcel/types-internal': 2.15.4 - '@parcel/utils': 2.15.4 + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/diagnostic': 2.16.4 + '@parcel/logger': 2.16.4 + '@parcel/profiler': 2.16.4 + '@parcel/types-internal': 2.16.4 + '@parcel/utils': 2.16.4 nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm '@popperjs/core@2.11.8': {} - '@swc/core-darwin-arm64@1.12.11': + '@swc/core-darwin-arm64@1.15.18': optional: true - '@swc/core-darwin-x64@1.12.11': + '@swc/core-darwin-x64@1.15.18': optional: true - '@swc/core-linux-arm-gnueabihf@1.12.11': + '@swc/core-linux-arm-gnueabihf@1.15.18': optional: true - '@swc/core-linux-arm64-gnu@1.12.11': + '@swc/core-linux-arm64-gnu@1.15.18': optional: true - '@swc/core-linux-arm64-musl@1.12.11': + '@swc/core-linux-arm64-musl@1.15.18': optional: true - '@swc/core-linux-x64-gnu@1.12.11': + '@swc/core-linux-x64-gnu@1.15.18': optional: true - '@swc/core-linux-x64-musl@1.12.11': + '@swc/core-linux-x64-musl@1.15.18': optional: true - '@swc/core-win32-arm64-msvc@1.12.11': + '@swc/core-win32-arm64-msvc@1.15.18': optional: true - '@swc/core-win32-ia32-msvc@1.12.11': + '@swc/core-win32-ia32-msvc@1.15.18': optional: true - '@swc/core-win32-x64-msvc@1.12.11': + '@swc/core-win32-x64-msvc@1.15.18': optional: true - '@swc/core@1.12.11(@swc/helpers@0.5.17)': + '@swc/core@1.15.18(@swc/helpers@0.5.19)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.23 + '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.12.11 - '@swc/core-darwin-x64': 1.12.11 - '@swc/core-linux-arm-gnueabihf': 1.12.11 - '@swc/core-linux-arm64-gnu': 1.12.11 - '@swc/core-linux-arm64-musl': 1.12.11 - '@swc/core-linux-x64-gnu': 1.12.11 - '@swc/core-linux-x64-musl': 1.12.11 - '@swc/core-win32-arm64-msvc': 1.12.11 - '@swc/core-win32-ia32-msvc': 1.12.11 - '@swc/core-win32-x64-msvc': 1.12.11 - '@swc/helpers': 0.5.17 + '@swc/core-darwin-arm64': 1.15.18 + '@swc/core-darwin-x64': 1.15.18 + '@swc/core-linux-arm-gnueabihf': 1.15.18 + '@swc/core-linux-arm64-gnu': 1.15.18 + '@swc/core-linux-arm64-musl': 1.15.18 + '@swc/core-linux-x64-gnu': 1.15.18 + '@swc/core-linux-x64-musl': 1.15.18 + '@swc/core-win32-arm64-msvc': 1.15.18 + '@swc/core-win32-ia32-msvc': 1.15.18 + '@swc/core-win32-x64-msvc': 1.15.18 + '@swc/helpers': 0.5.19 '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.17': + '@swc/helpers@0.5.19': dependencies: tslib: 2.8.1 - '@swc/types@0.1.23': + '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 @@ -1638,24 +1647,23 @@ snapshots: dependencies: safe-buffer: 5.2.1 + baseline-browser-mapping@2.10.0: {} + bootstrap-icons@1.13.1: {} - bootstrap@5.3.7(@popperjs/core@2.11.8): + bootstrap@5.3.8(@popperjs/core@2.11.8): dependencies: '@popperjs/core': 2.11.8 - braces@3.0.3: + browserslist@4.28.1: dependencies: - fill-range: 7.1.1 + baseline-browser-mapping: 2.10.0 + caniuse-lite: 1.0.30001777 + electron-to-chromium: 1.5.307 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.1) - browserslist@4.25.1: - dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.182 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) - - caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001777: {} chalk@4.1.2: dependencies: @@ -1680,7 +1688,7 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.0.4: {} + detect-libc@2.1.2: {} dotenv-expand@11.0.7: dependencies: @@ -1688,14 +1696,10 @@ snapshots: dotenv@16.6.1: {} - electron-to-chromium@1.5.182: {} + electron-to-chromium@1.5.307: {} escalade@3.2.0: {} - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - get-port@4.2.0: {} globals@13.24.0: @@ -1704,7 +1708,7 @@ snapshots: has-flag@4.0.0: {} - immutable@5.1.3: {} + immutable@5.1.5: {} is-extglob@2.1.1: {} @@ -1712,63 +1716,65 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-number@7.0.0: {} - jquery@3.7.1: {} json5@2.2.3: {} - lightningcss-darwin-arm64@1.30.1: + lightningcss-android-arm64@1.31.1: optional: true - lightningcss-darwin-x64@1.30.1: + lightningcss-darwin-arm64@1.31.1: optional: true - lightningcss-freebsd-x64@1.30.1: + lightningcss-darwin-x64@1.31.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.1: + lightningcss-freebsd-x64@1.31.1: optional: true - lightningcss-linux-arm64-gnu@1.30.1: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true - lightningcss-linux-arm64-musl@1.30.1: + lightningcss-linux-arm64-gnu@1.31.1: optional: true - lightningcss-linux-x64-gnu@1.30.1: + lightningcss-linux-arm64-musl@1.31.1: optional: true - lightningcss-linux-x64-musl@1.30.1: + lightningcss-linux-x64-gnu@1.31.1: optional: true - lightningcss-win32-arm64-msvc@1.30.1: + lightningcss-linux-x64-musl@1.31.1: optional: true - lightningcss-win32-x64-msvc@1.30.1: + lightningcss-win32-arm64-msvc@1.31.1: optional: true - lightningcss@1.30.1: + lightningcss-win32-x64-msvc@1.31.1: + optional: true + + lightningcss@1.31.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 optionalDependencies: - lightningcss-darwin-arm64: 1.30.1 - lightningcss-darwin-x64: 1.30.1 - lightningcss-freebsd-x64: 1.30.1 - lightningcss-linux-arm-gnueabihf: 1.30.1 - lightningcss-linux-arm64-gnu: 1.30.1 - lightningcss-linux-arm64-musl: 1.30.1 - lightningcss-linux-x64-gnu: 1.30.1 - lightningcss-linux-x64-musl: 1.30.1 - lightningcss-win32-arm64-msvc: 1.30.1 - lightningcss-win32-x64-msvc: 1.30.1 + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 lmdb@2.8.5: dependencies: - msgpackr: 1.11.4 + msgpackr: 1.11.8 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 - ordered-binary: 1.6.0 + ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 2.8.5 @@ -1778,11 +1784,6 @@ snapshots: '@lmdb/lmdb-linux-x64': 2.8.5 '@lmdb/lmdb-win32-x64': 2.8.5 - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - msgpackr-extract@3.0.3: dependencies: node-gyp-build-optional-packages: 5.2.2 @@ -1795,7 +1796,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.4: + msgpackr@1.11.8: optionalDependencies: msgpackr-extract: 3.0.3 @@ -1805,33 +1806,33 @@ snapshots: node-gyp-build-optional-packages@5.1.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 node-gyp-build-optional-packages@5.2.2: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 optional: true - node-releases@2.0.19: {} + node-releases@2.0.36: {} nullthrows@1.1.1: {} - ordered-binary@1.6.0: {} + ordered-binary@1.6.1: {} - parcel@2.15.4(@swc/helpers@0.5.17): + parcel@2.16.4(@swc/helpers@0.5.19): dependencies: - '@parcel/config-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/core': 2.15.4(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.4 - '@parcel/events': 2.15.4 - '@parcel/feature-flags': 2.15.4 - '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/logger': 2.15.4 - '@parcel/package-manager': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/reporter-cli': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/reporter-dev-server': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/reporter-tracer': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.4 + '@parcel/config-default': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19) + '@parcel/core': 2.16.4(@swc/helpers@0.5.19) + '@parcel/diagnostic': 2.16.4 + '@parcel/events': 2.16.4 + '@parcel/feature-flags': 2.16.4 + '@parcel/fs': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/logger': 2.16.4 + '@parcel/package-manager': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19))(@swc/helpers@0.5.19) + '@parcel/reporter-cli': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/reporter-dev-server': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/reporter-tracer': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.19)) + '@parcel/utils': 2.16.4 chalk: 4.1.2 commander: 12.1.0 get-port: 4.2.0 @@ -1841,15 +1842,15 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@4.0.3: {} postcss-value-parser@4.2.0: {} - prettier-plugin-jinja-template@2.1.0(prettier@3.6.2): + prettier-plugin-jinja-template@2.1.0(prettier@3.8.1): dependencies: - prettier: 3.6.2 + prettier: 3.8.1 - prettier@3.6.2: {} + prettier@3.8.1: {} react-refresh@0.16.0: {} @@ -1859,15 +1860,15 @@ snapshots: safe-buffer@5.2.1: {} - sass@1.89.2: + sass@1.97.3: dependencies: chokidar: 4.0.3 - immutable: 5.1.3 + immutable: 5.1.5 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.5.6 - semver@7.7.2: {} + semver@7.7.4: {} source-map-js@1.2.1: {} @@ -1877,17 +1878,13 @@ snapshots: term-size@2.2.1: {} - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - tslib@2.8.1: {} type-fest@0.20.2: {} - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 diff --git a/static/licenses.md b/static/licenses.md index 68728f8..d56096b 100644 --- a/static/licenses.md +++ b/static/licenses.md @@ -685,12 +685,45 @@ Public License instead of this License. But first, please read ``` +## github.com/alexedwards/argon2id + +* Name: github.com/alexedwards/argon2id +* Version: v1.0.0 + +* License: [MIT](https://github.com/alexedwards/argon2id/blob/v1.0.0/LICENSE) + + +``` +MIT License + +Copyright (c) 2018 Alex Edwards + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +``` + ## github.com/andybalholm/brotli * Name: github.com/andybalholm/brotli -* Version: v1.2.0 +* Version: v1.2.1 -* License: [MIT](https://github.com/andybalholm/brotli/blob/v1.2.0/LICENSE) +* License: [MIT](https://github.com/andybalholm/brotli/blob/v1.2.1/LICENSE) ``` @@ -716,6 +749,45 @@ THE SOFTWARE. ``` +## github.com/andybalholm/brotli/flate + +* Name: github.com/andybalholm/brotli/flate +* Version: v1.2.1 + +* License: [BSD-3-Clause](https://github.com/andybalholm/brotli/blob/v1.2.1/flate/LICENSE) + + +``` +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +``` + ## github.com/aymanbagabas/go-osc52/v2 * Name: github.com/aymanbagabas/go-osc52/v2 @@ -752,9 +824,9 @@ SOFTWARE. ## github.com/boombuler/barcode * Name: github.com/boombuler/barcode -* Version: v1.0.2 +* Version: v1.1.0 -* License: [MIT](https://github.com/boombuler/barcode/blob/v1.0.2/LICENSE) +* License: [MIT](https://github.com/boombuler/barcode/blob/v1.1.0/LICENSE) ``` @@ -785,9 +857,9 @@ SOFTWARE. ## github.com/brianvoe/gofakeit/v7 * Name: github.com/brianvoe/gofakeit/v7 -* Version: v7.3.0 +* Version: v7.14.1 -* License: [MIT](https://github.com/brianvoe/gofakeit/blob/v7.3.0/LICENSE.txt) +* License: [MIT](https://github.com/brianvoe/gofakeit/blob/v7.14.1/LICENSE.txt) ``` @@ -884,9 +956,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## github.com/charmbracelet/colorprofile * Name: github.com/charmbracelet/colorprofile -* Version: v0.3.1 +* Version: v0.4.3 -* License: [MIT](https://github.com/charmbracelet/colorprofile/blob/v0.3.1/LICENSE) +* License: [MIT](https://github.com/charmbracelet/colorprofile/blob/v0.4.3/LICENSE) ``` @@ -950,9 +1022,9 @@ SOFTWARE. ## github.com/charmbracelet/log * Name: github.com/charmbracelet/log -* Version: v0.4.2 +* Version: v1.0.0 -* License: [MIT](https://github.com/charmbracelet/log/blob/v0.4.2/LICENSE) +* License: [MIT](https://github.com/charmbracelet/log/blob/v1.0.0/LICENSE) ``` @@ -983,9 +1055,9 @@ SOFTWARE. ## github.com/charmbracelet/x/ansi * Name: github.com/charmbracelet/x/ansi -* Version: v0.9.3 +* Version: v0.11.7 -* License: [MIT](https://github.com/charmbracelet/x/blob/ansi/v0.9.3/ansi/LICENSE) +* License: [MIT](https://github.com/charmbracelet/x/blob/ansi/v0.11.7/ansi/LICENSE) ``` @@ -1016,9 +1088,9 @@ SOFTWARE. ## github.com/charmbracelet/x/cellbuf * Name: github.com/charmbracelet/x/cellbuf -* Version: v0.0.13 +* Version: v0.0.15 -* License: [MIT](https://github.com/charmbracelet/x/blob/cellbuf/v0.0.13/cellbuf/LICENSE) +* License: [MIT](https://github.com/charmbracelet/x/blob/cellbuf/v0.0.15/cellbuf/LICENSE) ``` @@ -1049,9 +1121,9 @@ SOFTWARE. ## github.com/charmbracelet/x/term * Name: github.com/charmbracelet/x/term -* Version: v0.2.1 +* Version: v0.2.2 -* License: [MIT](https://github.com/charmbracelet/x/blob/term/v0.2.1/term/LICENSE) +* License: [MIT](https://github.com/charmbracelet/x/blob/term/v0.2.2/term/LICENSE) ``` @@ -1079,6 +1151,72 @@ SOFTWARE. ``` +## github.com/clipperhouse/displaywidth + +* Name: github.com/clipperhouse/displaywidth +* Version: v0.11.0 + +* License: [MIT](https://github.com/clipperhouse/displaywidth/blob/v0.11.0/LICENSE) + + +``` +MIT License + +Copyright (c) 2025 Matt Sherman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +``` + +## github.com/clipperhouse/uax29/v2/graphemes + +* Name: github.com/clipperhouse/uax29/v2/graphemes +* Version: v2.7.0 + +* License: [MIT](https://github.com/clipperhouse/uax29/blob/v2.7.0/LICENSE) + + +``` +MIT License + +Copyright (c) 2020 Matt Sherman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +``` + ## github.com/dgraph-io/badger/v3 * Name: github.com/dgraph-io/badger/v3 @@ -1599,9 +1737,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## github.com/gabriel-vasile/mimetype * Name: github.com/gabriel-vasile/mimetype -* Version: v1.4.9 +* Version: v1.4.13 -* License: [MIT](https://github.com/gabriel-vasile/mimetype/blob/v1.4.9/LICENSE) +* License: [MIT](https://github.com/gabriel-vasile/mimetype/blob/v1.4.13/LICENSE) ``` @@ -1632,9 +1770,9 @@ SOFTWARE. ## github.com/go-logfmt/logfmt * Name: github.com/go-logfmt/logfmt -* Version: v0.6.0 +* Version: v0.6.1 -* License: [MIT](https://github.com/go-logfmt/logfmt/blob/v0.6.0/LICENSE) +* License: [MIT](https://github.com/go-logfmt/logfmt/blob/v0.6.1/LICENSE) ``` @@ -1731,9 +1869,9 @@ SOFTWARE. ## github.com/go-playground/validator/v10 * Name: github.com/go-playground/validator/v10 -* Version: v10.27.0 +* Version: v10.30.2 -* License: [MIT](https://github.com/go-playground/validator/blob/v10.27.0/LICENSE) +* License: [MIT](https://github.com/go-playground/validator/blob/v10.30.2/LICENSE) ``` @@ -1765,9 +1903,9 @@ SOFTWARE. ## github.com/gofiber/fiber/v2 * Name: github.com/gofiber/fiber/v2 -* Version: v2.52.8 +* Version: v2.52.13 -* License: [MIT](https://github.com/gofiber/fiber/blob/v2.52.8/LICENSE) +* License: [MIT](https://github.com/gofiber/fiber/blob/v2.52.13/LICENSE) ``` @@ -1798,9 +1936,9 @@ SOFTWARE. ## github.com/gofiber/fiber/v2/internal/schema * Name: github.com/gofiber/fiber/v2/internal/schema -* Version: v2.52.8 +* Version: v2.52.13 -* License: [BSD-3-Clause](https://github.com/gofiber/fiber/blob/v2.52.8/internal/schema/LICENSE) +* License: [BSD-3-Clause](https://github.com/gofiber/fiber/blob/v2.52.13/internal/schema/LICENSE) ``` @@ -1870,9 +2008,9 @@ SOFTWARE. ## github.com/gofiber/storage/badger/v2 * Name: github.com/gofiber/storage/badger/v2 -* Version: v2.0.1 +* Version: v2.1.5 -* License: [MIT](https://github.com/gofiber/storage/blob/badger/v2.0.1/badger/LICENSE) +* License: [MIT](https://github.com/gofiber/storage/blob/badger/v2.1.5/badger/LICENSE) ``` @@ -1969,9 +2107,9 @@ SOFTWARE. ## github.com/gofiber/utils * Name: github.com/gofiber/utils -* Version: v1.1.0 +* Version: v1.2.0 -* License: [MIT](https://github.com/gofiber/utils/blob/v1.1.0/LICENSE) +* License: [MIT](https://github.com/gofiber/utils/blob/v1.2.0/LICENSE) ``` @@ -2002,9 +2140,9 @@ SOFTWARE. ## github.com/gofiber/utils/v2 * Name: github.com/gofiber/utils/v2 -* Version: v2.0.0-beta.10 +* Version: v2.0.4 -* License: [MIT](https://github.com/gofiber/utils/blob/v2.0.0-beta.10/LICENSE) +* License: [MIT](https://github.com/gofiber/utils/blob/v2.0.4/LICENSE) ``` @@ -2430,9 +2568,9 @@ SOFTWARE. ## github.com/google/flatbuffers/go * Name: github.com/google/flatbuffers/go -* Version: v25.2.10 +* Version: v25.12.19 -* License: [Apache-2.0](https://github.com/google/flatbuffers/blob/v25.2.10/LICENSE) +* License: [Apache-2.0](https://github.com/google/flatbuffers/blob/v25.12.19/LICENSE) ``` @@ -2751,9 +2889,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## github.com/jackc/pgx/v5 * Name: github.com/jackc/pgx/v5 -* Version: v5.7.5 +* Version: v5.9.2 -* License: [MIT](https://github.com/jackc/pgx/blob/v5.7.5/LICENSE) +* License: [MIT](https://github.com/jackc/pgx/blob/v5.9.2/LICENSE) ``` @@ -2885,9 +3023,9 @@ THE SOFTWARE. ## github.com/klauspost/compress * Name: github.com/klauspost/compress -* Version: v1.18.0 +* Version: v1.18.5 -* License: [Apache-2.0](https://github.com/klauspost/compress/blob/v1.18.0/LICENSE) +* License: [Apache-2.0](https://github.com/klauspost/compress/blob/v1.18.5/LICENSE) ``` @@ -3201,9 +3339,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ## github.com/klauspost/compress/internal/snapref * Name: github.com/klauspost/compress/internal/snapref -* Version: v1.18.0 +* Version: v1.18.5 -* License: [BSD-3-Clause](https://github.com/klauspost/compress/blob/v1.18.0/internal/snapref/LICENSE) +* License: [BSD-3-Clause](https://github.com/klauspost/compress/blob/v1.18.5/internal/snapref/LICENSE) ``` @@ -3240,9 +3378,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## github.com/klauspost/compress/zstd/internal/xxhash * Name: github.com/klauspost/compress/zstd/internal/xxhash -* Version: v1.18.0 +* Version: v1.18.5 -* License: [MIT](https://github.com/klauspost/compress/blob/v1.18.0/zstd/internal/xxhash/LICENSE.txt) +* License: [MIT](https://github.com/klauspost/compress/blob/v1.18.5/zstd/internal/xxhash/LICENSE.txt) ``` @@ -3307,9 +3445,9 @@ SOFTWARE. ## github.com/lucasb-eyer/go-colorful * Name: github.com/lucasb-eyer/go-colorful -* Version: v1.2.0 +* Version: v1.4.0 -* License: [MIT](https://github.com/lucasb-eyer/go-colorful/blob/v1.2.0/LICENSE) +* License: [MIT](https://github.com/lucasb-eyer/go-colorful/blob/v1.4.0/LICENSE) ``` @@ -3359,9 +3497,9 @@ SOFTWARE. ## github.com/mattn/go-isatty * Name: github.com/mattn/go-isatty -* Version: v0.0.20 +* Version: v0.0.22 -* License: [MIT](https://github.com/mattn/go-isatty/blob/v0.0.20/LICENSE) +* License: [MIT](https://github.com/mattn/go-isatty/blob/v0.0.22/LICENSE) ``` @@ -3380,9 +3518,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ## github.com/mattn/go-runewidth * Name: github.com/mattn/go-runewidth -* Version: v0.0.16 +* Version: v0.0.23 -* License: [MIT](https://github.com/mattn/go-runewidth/blob/v0.0.16/LICENSE) +* License: [MIT](https://github.com/mattn/go-runewidth/blob/v0.0.23/LICENSE) ``` @@ -3725,6 +3863,38 @@ SOFTWARE. ``` +## github.com/sethvargo/go-password/password + +* Name: github.com/sethvargo/go-password/password +* Version: v0.3.1 + +* License: [MIT](https://github.com/sethvargo/go-password/blob/v0.3.1/LICENSE) + + +``` +Copyright 2017 Seth Vargo + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +``` + ## github.com/valyala/bytebufferpool * Name: github.com/valyala/bytebufferpool @@ -3762,9 +3932,9 @@ SOFTWARE. ## github.com/valyala/fasthttp * Name: github.com/valyala/fasthttp -* Version: v1.63.0 +* Version: v1.70.0 -* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.63.0/LICENSE) +* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.70.0/LICENSE) ``` @@ -3783,9 +3953,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ## github.com/valyala/fasthttp/reuseport * Name: github.com/valyala/fasthttp/reuseport -* Version: v1.63.0 +* Version: v1.70.0 -* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.63.0/reuseport/LICENSE) +* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.70.0/reuseport/LICENSE) ``` @@ -3812,6 +3982,77 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` +## github.com/wneessen/go-mail + +* Name: github.com/wneessen/go-mail +* Version: v0.7.2 + +* License: [MIT](https://github.com/wneessen/go-mail/blob/v0.7.2/LICENSE) + + +``` +MIT License + +Copyright (c) 2022-2025 The go-mail Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +``` + +## github.com/wneessen/go-mail/smtp + +* Name: github.com/wneessen/go-mail/smtp +* Version: v0.7.2 + +* License: [BSD-3-Clause](https://github.com/wneessen/go-mail/blob/v0.7.2/smtp/LICENSE) + + +``` +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +``` + ## github.com/xo/terminfo * Name: github.com/xo/terminfo @@ -3848,9 +4089,9 @@ SOFTWARE. ## github.com/yuin/goldmark * Name: github.com/yuin/goldmark -* Version: v1.7.12 +* Version: v1.8.2 -* License: [MIT](https://github.com/yuin/goldmark/blob/v1.7.12/LICENSE) +* License: [MIT](https://github.com/yuin/goldmark/blob/v1.8.2/LICENSE) ``` @@ -4091,12 +4332,226 @@ SOFTWARE. limitations under the License. ``` +## go.yaml.in/yaml/v4 + +* Name: go.yaml.in/yaml/v4 +* Version: v4.0.0-rc.4 + +* License: [Apache-2.0](https://github.com/yaml/go-yaml/blob/v4.0.0-rc.4/LICENSE) + + +``` + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 - The go-yaml Project Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +``` + ## golang.org/x/crypto * Name: golang.org/x/crypto -* Version: v0.40.0 +* Version: v0.50.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/crypto/+/v0.40.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/crypto/+/v0.50.0:LICENSE) ``` @@ -4133,9 +4588,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/net * Name: golang.org/x/net -* Version: v0.42.0 +* Version: v0.53.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/net/+/v0.42.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/net/+/v0.53.0:LICENSE) ``` @@ -4172,9 +4627,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/sync/semaphore * Name: golang.org/x/sync/semaphore -* Version: v0.16.0 +* Version: v0.20.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sync/+/v0.16.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sync/+/v0.20.0:LICENSE) ``` @@ -4211,9 +4666,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/sys * Name: golang.org/x/sys -* Version: v0.34.0 +* Version: v0.43.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sys/+/v0.34.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sys/+/v0.43.0:LICENSE) ``` @@ -4250,9 +4705,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/text * Name: golang.org/x/text -* Version: v0.27.0 +* Version: v0.36.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/text/+/v0.27.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/text/+/v0.36.0:LICENSE) ``` @@ -4289,9 +4744,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## google.golang.org/protobuf * Name: google.golang.org/protobuf -* Version: v1.36.6 +* Version: v1.36.11 -* License: [BSD-3-Clause](https://github.com/protocolbuffers/protobuf-go/blob/v1.36.6/LICENSE) +* License: [BSD-3-Clause](https://github.com/protocolbuffers/protobuf-go/blob/v1.36.11/LICENSE) ``` @@ -4361,9 +4816,9 @@ THE SOFTWARE. ## gorm.io/gorm * Name: gorm.io/gorm -* Version: v1.30.0 +* Version: v1.31.1 -* License: [MIT](https://github.com/go-gorm/gorm/blob/v1.30.0/LICENSE) +* License: [MIT](https://github.com/go-gorm/gorm/blob/v1.31.1/LICENSE) ``` diff --git a/views/person_form.html b/views/person_form.html index b7c1081..9ecf3af 100644 --- a/views/person_form.html +++ b/views/person_form.html @@ -18,13 +18,13 @@ {% if Person.ID %} {% if Person.IsMember %} {% else %} @@ -95,6 +95,12 @@ value="{{ Person.Email }}" autocomplete="off" /> + {% if PersonAccount.Enabled %} +
+ Attention! Cette adresse email est liée à un compte SSO. En cas de + changement, la connexion devra se faire avec la nouvelle adresse. +
+ {% endif %} @@ -345,6 +351,29 @@ {% endfor %} + {% if Person.IsMember or MembersPage %} +
+ Compte POP Vaud +
+ +
+ + +
+ {% endif %} +