├── lib ├── forum_web │ ├── controllers │ │ ├── page_html │ │ │ └── home.html.heex │ │ ├── page_html.ex │ │ ├── page_controller.ex │ │ ├── error_json.ex │ │ └── error_html.ex │ ├── components │ │ ├── layouts │ │ │ ├── app.html.heex │ │ │ └── root.html.heex │ │ └── layouts.ex │ ├── gettext.ex │ ├── router.ex │ ├── endpoint.ex │ └── telemetry.ex ├── forum │ ├── mailer.ex │ ├── repo.ex │ └── application.ex ├── forum.ex └── forum_web.ex ├── assets ├── index.js ├── .babelrc ├── static │ ├── favicon.ico │ └── robots.txt ├── styles │ └── app.scss ├── package.json ├── webpack.config.js └── pnpm-lock.yaml ├── .tool-versions ├── test ├── test_helper.exs ├── forum_web │ └── controllers │ │ ├── page_controller_test.exs │ │ ├── error_json_test.exs │ │ └── error_html_test.exs └── support │ ├── conn_case.ex │ └── data_case.ex ├── priv ├── repo │ ├── migrations │ │ └── .formatter.exs │ └── seeds.exs └── gettext │ ├── en │ └── LC_MESSAGES │ │ └── errors.po │ └── errors.pot ├── README.md ├── dev.docker-compose.yml ├── .formatter.exs ├── justfile ├── config ├── prod.exs ├── test.exs ├── config.exs ├── dev.exs └── runtime.exs ├── .gitignore ├── mix.exs ├── .credo.exs └── mix.lock /lib/forum_web/controllers/page_html/home.html.heex: -------------------------------------------------------------------------------- 1 | Hello Phoenix! 2 | -------------------------------------------------------------------------------- /assets/index.js: -------------------------------------------------------------------------------- 1 | import "./styles/app.scss" 2 | 3 | console.log("Hello Phoenix!") -------------------------------------------------------------------------------- /assets/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ] 5 | } -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | erlang 26.0.2 2 | elixir 1.15.2-otp-26 3 | nodejs lts-hydrogen 4 | pnpm 8.6.3 -------------------------------------------------------------------------------- /lib/forum_web/components/layouts/app.html.heex: -------------------------------------------------------------------------------- 1 |
2 | <%= @inner_content %> 3 |
4 | -------------------------------------------------------------------------------- /test/test_helper.exs: -------------------------------------------------------------------------------- 1 | ExUnit.start() 2 | Ecto.Adapters.SQL.Sandbox.mode(Forum.Repo, :manual) 3 | -------------------------------------------------------------------------------- /priv/repo/migrations/.formatter.exs: -------------------------------------------------------------------------------- 1 | [ 2 | import_deps: [:ecto_sql], 3 | inputs: ["*.exs"] 4 | ] 5 | -------------------------------------------------------------------------------- /assets/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elixircn-dev/forum/HEAD/assets/static/favicon.ico -------------------------------------------------------------------------------- /lib/forum/mailer.ex: -------------------------------------------------------------------------------- 1 | defmodule Forum.Mailer do 2 | @moduledoc false 3 | 4 | use Swoosh.Mailer, otp_app: :forum 5 | end 6 | -------------------------------------------------------------------------------- /assets/styles/app.scss: -------------------------------------------------------------------------------- 1 | html { 2 | font-family: sans-serif; 3 | 4 | body { 5 | margin: 0; 6 | padding: 0; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lib/forum/repo.ex: -------------------------------------------------------------------------------- 1 | defmodule Forum.Repo do 2 | use Ecto.Repo, 3 | otp_app: :forum, 4 | adapter: Ecto.Adapters.Postgres 5 | end 6 | -------------------------------------------------------------------------------- /lib/forum_web/controllers/page_html.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.PageHTML do 2 | use ForumWeb, :html 3 | 4 | embed_templates "page_html/*" 5 | end 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # forum 2 | 3 | 开发中的 Elixir 中文论坛,详见[开发计划](https://github.com/elixircn-dev/forum/issues/22)和[开发进度](https://github.com/elixircn-dev/forum/issues/23)。 4 | -------------------------------------------------------------------------------- /lib/forum_web/components/layouts.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.Layouts do 2 | @moduledoc false 3 | 4 | use ForumWeb, :html 5 | 6 | embed_templates "layouts/*" 7 | end 8 | -------------------------------------------------------------------------------- /dev.docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | db: 5 | image: postgres:15 6 | ports: 7 | - 5432:5432 8 | environment: 9 | POSTGRES_PASSWORD: postgres 10 | -------------------------------------------------------------------------------- /assets/static/robots.txt: -------------------------------------------------------------------------------- 1 | # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /.formatter.exs: -------------------------------------------------------------------------------- 1 | [ 2 | import_deps: [:ecto, :ecto_sql, :phoenix], 3 | subdirectories: ["priv/*/migrations"], 4 | plugins: [Phoenix.LiveView.HTMLFormatter], 5 | inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}", "priv/*/seeds.exs"] 6 | ] 7 | -------------------------------------------------------------------------------- /test/forum_web/controllers/page_controller_test.exs: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.PageControllerTest do 2 | use ForumWeb.ConnCase 3 | 4 | test "GET /", %{conn: conn} do 5 | conn = get(conn, ~p"/") 6 | assert html_response(conn, 200) =~ "Forum" 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- 1 | format: 2 | mix format 3 | 4 | setup: 5 | mix deps.get 6 | just dev-env up -d 7 | mix ecto.setup 8 | 9 | dev-env +args: 10 | docker compose -f dev.docker-compose.yml {{args}} 11 | 12 | run +args='': 13 | iex -S mix {{args}} 14 | 15 | test: 16 | mix test 17 | -------------------------------------------------------------------------------- /lib/forum.ex: -------------------------------------------------------------------------------- 1 | defmodule Forum do 2 | @moduledoc """ 3 | Forum keeps the contexts that define your domain 4 | and business logic. 5 | 6 | Contexts are also responsible for managing your data, regardless 7 | if it comes from the database, an external API or others. 8 | """ 9 | end 10 | -------------------------------------------------------------------------------- /lib/forum_web/controllers/page_controller.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.PageController do 2 | use ForumWeb, :controller 3 | 4 | def home(conn, _params) do 5 | # The home page is often custom made, 6 | # so skip the default app layout. 7 | render(conn, :home, layout: false) 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /priv/repo/seeds.exs: -------------------------------------------------------------------------------- 1 | # Script for populating the database. You can run it as: 2 | # 3 | # mix run priv/repo/seeds.exs 4 | # 5 | # Inside the script, you can read and write to any of your 6 | # repositories directly: 7 | # 8 | # Forum.Repo.insert!(%Forum.SomeSchema{}) 9 | # 10 | # We recommend using the bang functions (`insert!`, `update!` 11 | # and so on) as they will fail if something goes wrong. 12 | -------------------------------------------------------------------------------- /test/forum_web/controllers/error_json_test.exs: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.ErrorJSONTest do 2 | use ForumWeb.ConnCase, async: true 3 | 4 | test "renders 404" do 5 | assert ForumWeb.ErrorJSON.render("404.json", %{}) == %{errors: %{detail: "Not Found"}} 6 | end 7 | 8 | test "renders 500" do 9 | assert ForumWeb.ErrorJSON.render("500.json", %{}) == 10 | %{errors: %{detail: "Internal Server Error"}} 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/forum_web/controllers/error_html_test.exs: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.ErrorHTMLTest do 2 | use ForumWeb.ConnCase, async: true 3 | 4 | # Bring render_to_string/4 for testing custom views 5 | import Phoenix.Template 6 | 7 | test "renders 404.html" do 8 | assert render_to_string(ForumWeb.ErrorHTML, "404", "html", []) == "Not Found" 9 | end 10 | 11 | test "renders 500.html" do 12 | assert render_to_string(ForumWeb.ErrorHTML, "500", "html", []) == "Internal Server Error" 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/forum_web/controllers/error_json.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.ErrorJSON do 2 | # If you want to customize a particular status code, 3 | # you may add your own clauses, such as: 4 | # 5 | # def render("500.json", _assigns) do 6 | # %{errors: %{detail: "Internal Server Error"}} 7 | # end 8 | 9 | # By default, Phoenix returns the status message from 10 | # the template name. For example, "404.json" becomes 11 | # "Not Found". 12 | def render(template, _assigns) do 13 | %{errors: %{detail: Phoenix.Controller.status_message_from_template(template)}} 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/forum_web/controllers/error_html.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.ErrorHTML do 2 | use ForumWeb, :html 3 | 4 | # If you want to customize your error pages, 5 | # uncomment the embed_templates/1 call below 6 | # and add pages to the error directory: 7 | # 8 | # * lib/forum_web/controllers/error_html/404.html.heex 9 | # * lib/forum_web/controllers/error_html/500.html.heex 10 | # 11 | # embed_templates "error_html/*" 12 | 13 | # The default is to render a plain text page based on 14 | # the template name. For example, "404.html" becomes 15 | # "Not Found". 16 | def render(template, _assigns) do 17 | Phoenix.Controller.status_message_from_template(template) 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /lib/forum_web/components/layouts/root.html.heex: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <.live_title suffix=" · Phoenix Framework"> 8 | <%= assigns[:page_title] || "Forum" %> 9 | 10 | 11 | 13 | 14 | 15 | <%= @inner_content %> 16 | 17 | 18 | -------------------------------------------------------------------------------- /config/prod.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | 3 | # Note we also include the path to a cache manifest 4 | # containing the digested version of static files. This 5 | # manifest is generated by the `mix assets.deploy` task, 6 | # which you should run after static files are built and 7 | # before starting your production server. 8 | config :forum, ForumWeb.Endpoint, 9 | cache_static_manifest: "priv/static/cache_manifest.json", 10 | server: true 11 | 12 | # Configures Swoosh API Client 13 | config :swoosh, api_client: Swoosh.ApiClient.Finch, finch_name: Forum.Finch 14 | 15 | # Do not print debug messages in production 16 | config :logger, level: :info 17 | 18 | # Runtime production configuration, including reading 19 | # of environment variables, is done on config/runtime.exs. 20 | -------------------------------------------------------------------------------- /lib/forum_web/gettext.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.Gettext do 2 | @moduledoc """ 3 | A module providing Internationalization with a gettext-based API. 4 | 5 | By using [Gettext](https://hexdocs.pm/gettext), 6 | your module gains a set of macros for translations, for example: 7 | 8 | import ForumWeb.Gettext 9 | 10 | # Simple translation 11 | gettext("Here is the string to translate") 12 | 13 | # Plural translation 14 | ngettext("Here is the string to translate", 15 | "Here are the strings to translate", 16 | 3) 17 | 18 | # Domain-based translation 19 | dgettext("errors", "Here is the error message to translate") 20 | 21 | See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage. 22 | """ 23 | use Gettext, otp_app: :forum 24 | end 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # The directory Mix will write compiled artifacts to. 2 | /_build/ 3 | 4 | # If you run "mix test --cover", coverage assets end up here. 5 | /cover/ 6 | 7 | # The directory Mix downloads your dependencies sources to. 8 | /deps/ 9 | 10 | # Where 3rd-party dependencies like ExDoc output generated docs. 11 | /doc/ 12 | 13 | # Ignore .fetch files in case you like to edit your project deps locally. 14 | /.fetch 15 | 16 | # If the VM crashes, it generates a dump, let's ignore it too. 17 | erl_crash.dump 18 | 19 | # Also ignore archive artifacts (built via "mix archive.build"). 20 | *.ez 21 | 22 | # Temporary files, for example, from tests. 23 | /tmp/ 24 | 25 | # Ignore package tarball (built via "mix hex.build"). 26 | forum-*.tar 27 | 28 | # Ignore state assets. 29 | /priv/static/ 30 | 31 | # In case you use Node.js/npm, you want to ignore these. 32 | npm-debug.log 33 | /assets/node_modules/ 34 | 35 | -------------------------------------------------------------------------------- /assets/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "forum", 3 | "version": "1.0.0", 4 | "description": "Frontend for forum", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "deploy": "cross-env NODE_ENV=production webpack --mode production", 9 | "watch": "cross-env NODE_ENV=development webpack --mode development --watch --watch-options-stdin" 10 | }, 11 | "author": "Hentioe", 12 | "license": "UNLICENSE", 13 | "devDependencies": { 14 | "@babel/preset-env": "^7.22.5", 15 | "babel-loader": "^9.1.2", 16 | "copy-webpack-plugin": "^11.0.0", 17 | "cross-env": "^7.0.3", 18 | "css-loader": "^6.8.1", 19 | "css-minimizer-webpack-plugin": "^5.0.1", 20 | "glob": "^10.3.0", 21 | "mini-css-extract-plugin": "^2.7.6", 22 | "sass": "^1.63.6", 23 | "sass-loader": "^13.3.2", 24 | "webpack": "^5.88.0", 25 | "webpack-cli": "^5.1.4" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /config/test.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | 3 | # Configure your database 4 | # 5 | # The MIX_TEST_PARTITION environment variable can be used 6 | # to provide built-in test partitioning in CI environment. 7 | # Run `mix help test` for more information. 8 | config :forum, Forum.Repo, 9 | username: "postgres", 10 | password: "postgres", 11 | hostname: "localhost", 12 | database: "forum_test#{System.get_env("MIX_TEST_PARTITION")}", 13 | pool: Ecto.Adapters.SQL.Sandbox, 14 | pool_size: 10 15 | 16 | # We don't run a server during test. If one is required, 17 | # you can enable the server option below. 18 | config :forum, ForumWeb.Endpoint, 19 | http: [ip: {127, 0, 0, 1}, port: 4002], 20 | secret_key_base: "csm8iZnmOVJAsCTSYvA9bkLQvke9fqwo2xyMjHdBoZnaDXy5g1J1+6ocZ2KUgJmS", 21 | server: false 22 | 23 | # In test we don't send emails. 24 | config :forum, Forum.Mailer, adapter: Swoosh.Adapters.Test 25 | 26 | # Disable swoosh api client as it is only required for production adapters. 27 | config :swoosh, :api_client, false 28 | 29 | # Print only warnings and errors during test 30 | config :logger, level: :warning 31 | 32 | # Initialize plugs at runtime for faster test compilation 33 | config :phoenix, :plug_init_mode, :runtime 34 | -------------------------------------------------------------------------------- /lib/forum/application.ex: -------------------------------------------------------------------------------- 1 | defmodule Forum.Application do 2 | # See https://hexdocs.pm/elixir/Application.html 3 | # for more information on OTP Applications 4 | @moduledoc false 5 | 6 | use Application 7 | 8 | @impl true 9 | def start(_type, _args) do 10 | children = [ 11 | # Start the Telemetry supervisor 12 | ForumWeb.Telemetry, 13 | # Start the Ecto repository 14 | Forum.Repo, 15 | # Start the PubSub system 16 | {Phoenix.PubSub, name: Forum.PubSub}, 17 | # Start Finch 18 | {Finch, name: Forum.Finch}, 19 | # Start the Endpoint (http/https) 20 | ForumWeb.Endpoint 21 | # Start a worker by calling: Forum.Worker.start_link(arg) 22 | # {Forum.Worker, arg} 23 | ] 24 | 25 | # See https://hexdocs.pm/elixir/Supervisor.html 26 | # for other strategies and supported options 27 | opts = [strategy: :one_for_one, name: Forum.Supervisor] 28 | Supervisor.start_link(children, opts) 29 | end 30 | 31 | # Tell Phoenix to update the endpoint configuration 32 | # whenever the application is updated. 33 | @impl true 34 | def config_change(changed, _new, removed) do 35 | ForumWeb.Endpoint.config_change(changed, removed) 36 | :ok 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /test/support/conn_case.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.ConnCase do 2 | @moduledoc """ 3 | This module defines the test case to be used by 4 | tests that require setting up a connection. 5 | 6 | Such tests rely on `Phoenix.ConnTest` and also 7 | import other functionality to make it easier 8 | to build common data structures and query the data layer. 9 | 10 | Finally, if the test case interacts with the database, 11 | we enable the SQL sandbox, so changes done to the database 12 | are reverted at the end of every test. If you are using 13 | PostgreSQL, you can even run database tests asynchronously 14 | by setting `use ForumWeb.ConnCase, async: true`, although 15 | this option is not recommended for other databases. 16 | """ 17 | 18 | use ExUnit.CaseTemplate 19 | 20 | using do 21 | quote do 22 | # The default endpoint for testing 23 | @endpoint ForumWeb.Endpoint 24 | 25 | use ForumWeb, :verified_routes 26 | 27 | # Import conveniences for testing with connections 28 | import Plug.Conn 29 | import Phoenix.ConnTest 30 | import ForumWeb.ConnCase 31 | end 32 | end 33 | 34 | setup tags do 35 | Forum.DataCase.setup_sandbox(tags) 36 | {:ok, conn: Phoenix.ConnTest.build_conn()} 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /lib/forum_web/router.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.Router do 2 | use ForumWeb, :router 3 | 4 | pipeline :browser do 5 | plug :accepts, ["html"] 6 | plug :fetch_session 7 | plug :fetch_live_flash 8 | plug :put_root_layout, html: {ForumWeb.Layouts, :root} 9 | plug :protect_from_forgery 10 | plug :put_secure_browser_headers 11 | end 12 | 13 | pipeline :api do 14 | plug :accepts, ["json"] 15 | end 16 | 17 | scope "/", ForumWeb do 18 | pipe_through :browser 19 | 20 | get "/", PageController, :home 21 | end 22 | 23 | # Other scopes may use custom stacks. 24 | # scope "/api", ForumWeb do 25 | # pipe_through :api 26 | # end 27 | 28 | # Enable LiveDashboard and Swoosh mailbox preview in development 29 | if Application.compile_env(:forum, :dev_routes) do 30 | # If you want to use the LiveDashboard in production, you should put 31 | # it behind authentication and allow only admins to access it. 32 | # If your application does not have an admins-only section yet, 33 | # you can use Plug.BasicAuth to set up some basic authentication 34 | # as long as you are also using SSL (which you should anyway). 35 | import Phoenix.LiveDashboard.Router 36 | 37 | scope "/dev" do 38 | pipe_through :browser 39 | 40 | live_dashboard "/dashboard", metrics: ForumWeb.Telemetry 41 | forward "/mailbox", Plug.Swoosh.MailboxPreview 42 | end 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /config/config.exs: -------------------------------------------------------------------------------- 1 | # This file is responsible for configuring your application 2 | # and its dependencies with the aid of the Config module. 3 | # 4 | # This configuration file is loaded before any dependency and 5 | # is restricted to this project. 6 | 7 | # General application configuration 8 | import Config 9 | 10 | config :forum, 11 | ecto_repos: [Forum.Repo] 12 | 13 | # Configures the endpoint 14 | config :forum, ForumWeb.Endpoint, 15 | url: [host: "localhost"], 16 | render_errors: [ 17 | formats: [html: ForumWeb.ErrorHTML, json: ForumWeb.ErrorJSON], 18 | layout: false 19 | ], 20 | pubsub_server: Forum.PubSub, 21 | live_view: [signing_salt: "qCv_z@AO"] 22 | 23 | # Configures the mailer 24 | # 25 | # By default it uses the "Local" adapter which stores the emails 26 | # locally. You can see the emails in your browser, at "/dev/mailbox". 27 | # 28 | # For production it's recommended to configure a different adapter 29 | # at the `config/runtime.exs`. 30 | config :forum, Forum.Mailer, adapter: Swoosh.Adapters.Local 31 | 32 | # Configures Elixir's Logger 33 | config :logger, :console, 34 | format: "$time $metadata[$level] $message\n", 35 | metadata: [:request_id] 36 | 37 | # Use Jason for JSON parsing in Phoenix 38 | config :phoenix, :json_library, Jason 39 | 40 | # Import environment specific config. This must remain at the bottom 41 | # of this file so it overrides the configuration defined above. 42 | import_config "#{config_env()}.exs" 43 | -------------------------------------------------------------------------------- /lib/forum_web/endpoint.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.Endpoint do 2 | use Phoenix.Endpoint, otp_app: :forum 3 | 4 | # The session will be stored in the cookie and signed, 5 | # this means its contents can be read but not tampered with. 6 | # Set :encryption_salt if you would also like to encrypt it. 7 | @session_options [ 8 | store: :cookie, 9 | key: "_forum_key", 10 | signing_salt: "rx2ZQj7m", 11 | same_site: "Lax" 12 | ] 13 | 14 | socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]] 15 | 16 | # Serve at "/" the static files from "priv/static" directory. 17 | # 18 | # You should set gzip to true if you are running phx.digest 19 | # when deploying your static files in production. 20 | plug Plug.Static, 21 | at: "/", 22 | from: :forum, 23 | gzip: false, 24 | only: ForumWeb.static_paths() 25 | 26 | # Code reloading can be explicitly enabled under the 27 | # :code_reloader configuration of your endpoint. 28 | if code_reloading? do 29 | socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket 30 | plug Phoenix.LiveReloader 31 | plug Phoenix.CodeReloader 32 | plug Phoenix.Ecto.CheckRepoStatus, otp_app: :forum 33 | end 34 | 35 | plug Phoenix.LiveDashboard.RequestLogger, 36 | param_key: "request_logger", 37 | cookie_key: "request_logger" 38 | 39 | plug Plug.RequestId 40 | plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint] 41 | 42 | plug Plug.Parsers, 43 | parsers: [:urlencoded, :multipart, :json], 44 | pass: ["*/*"], 45 | json_decoder: Phoenix.json_library() 46 | 47 | plug Plug.MethodOverride 48 | plug Plug.Head 49 | plug Plug.Session, @session_options 50 | plug ForumWeb.Router 51 | end 52 | -------------------------------------------------------------------------------- /test/support/data_case.ex: -------------------------------------------------------------------------------- 1 | defmodule Forum.DataCase do 2 | @moduledoc """ 3 | This module defines the setup for tests requiring 4 | access to the application's data layer. 5 | 6 | You may define functions here to be used as helpers in 7 | your tests. 8 | 9 | Finally, if the test case interacts with the database, 10 | we enable the SQL sandbox, so changes done to the database 11 | are reverted at the end of every test. If you are using 12 | PostgreSQL, you can even run database tests asynchronously 13 | by setting `use Forum.DataCase, async: true`, although 14 | this option is not recommended for other databases. 15 | """ 16 | 17 | use ExUnit.CaseTemplate 18 | 19 | using do 20 | quote do 21 | alias Forum.Repo 22 | 23 | import Ecto 24 | import Ecto.Changeset 25 | import Ecto.Query 26 | import Forum.DataCase 27 | end 28 | end 29 | 30 | setup tags do 31 | Forum.DataCase.setup_sandbox(tags) 32 | :ok 33 | end 34 | 35 | @doc """ 36 | Sets up the sandbox based on the test tags. 37 | """ 38 | def setup_sandbox(tags) do 39 | pid = Ecto.Adapters.SQL.Sandbox.start_owner!(Forum.Repo, shared: not tags[:async]) 40 | on_exit(fn -> Ecto.Adapters.SQL.Sandbox.stop_owner(pid) end) 41 | end 42 | 43 | @doc """ 44 | A helper that transforms changeset errors into a map of messages. 45 | 46 | assert {:error, changeset} = Accounts.create_user(%{password: "short"}) 47 | assert "password is too short" in errors_on(changeset).password 48 | assert %{password: ["password is too short"]} = errors_on(changeset) 49 | 50 | """ 51 | def errors_on(changeset) do 52 | Ecto.Changeset.traverse_errors(changeset, fn {message, opts} -> 53 | Regex.replace(~r"%{(\w+)}", message, fn _, key -> 54 | opts |> Keyword.get(String.to_existing_atom(key), key) |> to_string() 55 | end) 56 | end) 57 | end 58 | end 59 | -------------------------------------------------------------------------------- /assets/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const glob = require("glob"); 3 | const MiniCssExtractPlugin = require("mini-css-extract-plugin"); 4 | const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); 5 | const CopyWebpackPlugin = require("copy-webpack-plugin"); 6 | 7 | module.exports = (_env, options) => { 8 | const devMode = options.mode !== "production"; 9 | 10 | const terserPlugin = (compiler) => { 11 | const TerserPlugin = require("terser-webpack-plugin"); 12 | new TerserPlugin({ 13 | terserOptions: { 14 | compress: {}, 15 | }, 16 | }).apply(compiler); 17 | }; 18 | 19 | const minimizer = [ 20 | // If in development mode, do not compress the code 21 | !devMode && terserPlugin, 22 | new CssMinimizerPlugin({}), 23 | ].filter(Boolean); 24 | 25 | return { 26 | optimization: { 27 | minimize: true, 28 | minimizer, 29 | }, 30 | entry: { 31 | app: glob.sync("./vendor/**/*.js").concat(["./index.js"]), 32 | }, 33 | output: { 34 | filename: "[name].js", 35 | path: path.resolve(__dirname, "../priv/static/assets"), 36 | }, 37 | devtool: devMode ? "source-map" : undefined, 38 | module: { 39 | rules: [ 40 | { 41 | test: /\.m?js/, 42 | resolve: { 43 | fullySpecified: false, 44 | }, 45 | }, 46 | { 47 | test: /\.js$/, 48 | exclude: /node_modules/, 49 | use: { 50 | loader: "babel-loader", 51 | }, 52 | }, 53 | { 54 | test: /\.[s]?css$/, 55 | use: [ 56 | MiniCssExtractPlugin.loader, 57 | "css-loader", 58 | { 59 | loader: "sass-loader", 60 | options: { 61 | // `dart-sass` is preferred 62 | implementation: require("sass"), 63 | }, 64 | }, 65 | ], 66 | }, 67 | ], 68 | }, 69 | plugins: [ 70 | new MiniCssExtractPlugin({ filename: "../assets/[name].css" }), 71 | new CopyWebpackPlugin({ patterns: [{ from: "static/", to: "../" }] }), 72 | ], 73 | }; 74 | }; 75 | -------------------------------------------------------------------------------- /mix.exs: -------------------------------------------------------------------------------- 1 | defmodule Forum.MixProject do 2 | use Mix.Project 3 | 4 | def project do 5 | [ 6 | app: :forum, 7 | version: "0.1.0", 8 | elixir: "~> 1.15", 9 | elixirc_paths: elixirc_paths(Mix.env()), 10 | start_permanent: Mix.env() == :prod, 11 | aliases: aliases(), 12 | deps: deps(), 13 | dialyzer: dialyzer() 14 | ] 15 | end 16 | 17 | # Configuration for the OTP application. 18 | # 19 | # Type `mix help compile.app` for more information. 20 | def application do 21 | [ 22 | mod: {Forum.Application, []}, 23 | extra_applications: [:logger, :runtime_tools] 24 | ] 25 | end 26 | 27 | # Specifies which paths to compile per environment. 28 | defp elixirc_paths(:test), do: ["lib", "test/support"] 29 | defp elixirc_paths(_), do: ["lib"] 30 | 31 | # Configuration for dialyzer. 32 | defp dialyzer do 33 | [ 34 | plt_add_apps: [:iex, :mix] 35 | ] 36 | end 37 | 38 | # Specifies your project dependencies. 39 | # 40 | # Type `mix help deps` for examples and options. 41 | defp deps do 42 | [ 43 | {:dialyxir, "~> 1.3", only: [:dev], runtime: false}, 44 | {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, 45 | {:phoenix, "~> 1.7.6"}, 46 | {:phoenix_ecto, "~> 4.4"}, 47 | {:ecto_sql, "~> 3.10"}, 48 | {:postgrex, ">= 0.0.0"}, 49 | {:phoenix_html, "~> 3.3"}, 50 | {:phoenix_live_reload, "~> 1.2", only: :dev}, 51 | {:phoenix_live_view, "~> 0.19.0"}, 52 | {:floki, ">= 0.30.0", only: :test}, 53 | {:phoenix_live_dashboard, "~> 0.8.0"}, 54 | {:swoosh, "~> 1.3"}, 55 | {:finch, "~> 0.13"}, 56 | {:telemetry_metrics, "~> 0.6"}, 57 | {:telemetry_poller, "~> 1.0"}, 58 | {:gettext, "~> 0.20"}, 59 | {:jason, "~> 1.2"}, 60 | {:plug_cowboy, "~> 2.5"} 61 | ] 62 | end 63 | 64 | # Aliases are shortcuts or tasks specific to the current project. 65 | # For example, to install project dependencies and perform other setup tasks, run: 66 | # 67 | # $ mix setup 68 | # 69 | # See the documentation for `Mix` for more info on aliases. 70 | defp aliases do 71 | [ 72 | setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"], 73 | "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], 74 | "ecto.reset": ["ecto.drop", "ecto.setup"], 75 | test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"] 76 | ] 77 | end 78 | end 79 | -------------------------------------------------------------------------------- /config/dev.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | 3 | # Configure your database 4 | config :forum, Forum.Repo, 5 | username: "postgres", 6 | password: "postgres", 7 | hostname: "localhost", 8 | database: "forum_dev", 9 | stacktrace: true, 10 | show_sensitive_data_on_connection_error: true, 11 | pool_size: 10 12 | 13 | # For development, we disable any cache and enable 14 | # debugging and code reloading. 15 | # 16 | # The watchers configuration can be used to run external 17 | # watchers to your application. For example, we can use it 18 | # to bundle .js and .css sources. 19 | config :forum, ForumWeb.Endpoint, 20 | # Binding to loopback ipv4 address prevents access from other machines. 21 | # Change to `ip: {0, 0, 0, 0}` to allow access from other machines. 22 | http: [ip: {127, 0, 0, 1}, port: 4000], 23 | check_origin: false, 24 | code_reloader: true, 25 | debug_errors: true, 26 | secret_key_base: "oGcDmKT94uigcULIvOFV1CcAMGeEzCncvosQcIRUzZQ1XGoL+duxg5HfTL4ieb3x", 27 | watchers: [ 28 | pnpm: ["run", "watch", cd: Path.expand("../assets", __DIR__)] 29 | ] 30 | 31 | # ## SSL Support 32 | # 33 | # In order to use HTTPS in development, a self-signed 34 | # certificate can be generated by running the following 35 | # Mix task: 36 | # 37 | # mix phx.gen.cert 38 | # 39 | # Run `mix help phx.gen.cert` for more information. 40 | # 41 | # The `http:` config above can be replaced with: 42 | # 43 | # https: [ 44 | # port: 4001, 45 | # cipher_suite: :strong, 46 | # keyfile: "priv/cert/selfsigned_key.pem", 47 | # certfile: "priv/cert/selfsigned.pem" 48 | # ], 49 | # 50 | # If desired, both `http:` and `https:` keys can be 51 | # configured to run both http and https servers on 52 | # different ports. 53 | 54 | # Watch static and templates for browser reloading. 55 | config :forum, ForumWeb.Endpoint, 56 | live_reload: [ 57 | patterns: [ 58 | ~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$", 59 | ~r"priv/gettext/.*(po)$", 60 | ~r"lib/forum_web/(controllers|live|components)/.*(ex|heex)$" 61 | ] 62 | ] 63 | 64 | # Enable dev routes for dashboard and mailbox 65 | config :forum, dev_routes: true 66 | 67 | # Do not include metadata nor timestamps in development logs 68 | config :logger, :console, format: "[$level] $message\n" 69 | 70 | # Set a higher stacktrace during development. Avoid configuring such 71 | # in production as building large stacktraces may be expensive. 72 | config :phoenix, :stacktrace_depth, 20 73 | 74 | # Initialize plugs at runtime for faster development compilation 75 | config :phoenix, :plug_init_mode, :runtime 76 | 77 | # Disable swoosh api client as it is only required for production adapters. 78 | config :swoosh, :api_client, false 79 | -------------------------------------------------------------------------------- /lib/forum_web.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb do 2 | @moduledoc """ 3 | The entrypoint for defining your web interface, such 4 | as controllers, components, channels, and so on. 5 | 6 | This can be used in your application as: 7 | 8 | use ForumWeb, :controller 9 | use ForumWeb, :html 10 | 11 | The definitions below will be executed for every controller, 12 | component, etc, so keep them short and clean, focused 13 | on imports, uses and aliases. 14 | 15 | Do NOT define functions inside the quoted expressions 16 | below. Instead, define additional modules and import 17 | those modules here. 18 | """ 19 | 20 | def static_paths, do: ~w(assets fonts images favicon.ico robots.txt) 21 | 22 | def router do 23 | quote do 24 | use Phoenix.Router, helpers: false 25 | 26 | # Import common connection and controller functions to use in pipelines 27 | import Plug.Conn 28 | import Phoenix.Controller 29 | import Phoenix.LiveView.Router 30 | end 31 | end 32 | 33 | def channel do 34 | quote do 35 | use Phoenix.Channel 36 | end 37 | end 38 | 39 | def controller do 40 | quote do 41 | use Phoenix.Controller, 42 | formats: [:html, :json], 43 | layouts: [html: ForumWeb.Layouts] 44 | 45 | import Plug.Conn 46 | import ForumWeb.Gettext 47 | 48 | unquote(verified_routes()) 49 | end 50 | end 51 | 52 | def live_view do 53 | quote do 54 | use Phoenix.LiveView, 55 | layout: {ForumWeb.Layouts, :app} 56 | 57 | unquote(html_helpers()) 58 | end 59 | end 60 | 61 | def live_component do 62 | quote do 63 | use Phoenix.LiveComponent 64 | 65 | unquote(html_helpers()) 66 | end 67 | end 68 | 69 | def html do 70 | quote do 71 | use Phoenix.Component 72 | 73 | # Import convenience functions from controllers 74 | import Phoenix.Controller, 75 | only: [get_csrf_token: 0, view_module: 1, view_template: 1] 76 | 77 | # Include general helpers for rendering HTML 78 | unquote(html_helpers()) 79 | end 80 | end 81 | 82 | defp html_helpers do 83 | quote do 84 | # HTML escaping functionality 85 | import Phoenix.HTML 86 | # Core UI components and translation 87 | import ForumWeb.Gettext 88 | 89 | # Shortcut for generating JS commands 90 | alias Phoenix.LiveView.JS 91 | 92 | # Routes generation with the ~p sigil 93 | unquote(verified_routes()) 94 | end 95 | end 96 | 97 | def verified_routes do 98 | quote do 99 | use Phoenix.VerifiedRoutes, 100 | endpoint: ForumWeb.Endpoint, 101 | router: ForumWeb.Router, 102 | statics: ForumWeb.static_paths() 103 | end 104 | end 105 | 106 | @doc """ 107 | When used, dispatch to the appropriate controller/view/etc. 108 | """ 109 | defmacro __using__(which) when is_atom(which) do 110 | apply(__MODULE__, which, []) 111 | end 112 | end 113 | -------------------------------------------------------------------------------- /priv/gettext/en/LC_MESSAGES/errors.po: -------------------------------------------------------------------------------- 1 | ## `msgid`s in this file come from POT (.pot) files. 2 | ## 3 | ## Do not add, change, or remove `msgid`s manually here as 4 | ## they're tied to the ones in the corresponding POT file 5 | ## (with the same domain). 6 | ## 7 | ## Use `mix gettext.extract --merge` or `mix gettext.merge` 8 | ## to merge POT files into PO files. 9 | msgid "" 10 | msgstr "" 11 | "Language: en\n" 12 | 13 | ## From Ecto.Changeset.cast/4 14 | msgid "can't be blank" 15 | msgstr "" 16 | 17 | ## From Ecto.Changeset.unique_constraint/3 18 | msgid "has already been taken" 19 | msgstr "" 20 | 21 | ## From Ecto.Changeset.put_change/3 22 | msgid "is invalid" 23 | msgstr "" 24 | 25 | ## From Ecto.Changeset.validate_acceptance/3 26 | msgid "must be accepted" 27 | msgstr "" 28 | 29 | ## From Ecto.Changeset.validate_format/3 30 | msgid "has invalid format" 31 | msgstr "" 32 | 33 | ## From Ecto.Changeset.validate_subset/3 34 | msgid "has an invalid entry" 35 | msgstr "" 36 | 37 | ## From Ecto.Changeset.validate_exclusion/3 38 | msgid "is reserved" 39 | msgstr "" 40 | 41 | ## From Ecto.Changeset.validate_confirmation/3 42 | msgid "does not match confirmation" 43 | msgstr "" 44 | 45 | ## From Ecto.Changeset.no_assoc_constraint/3 46 | msgid "is still associated with this entry" 47 | msgstr "" 48 | 49 | msgid "are still associated with this entry" 50 | msgstr "" 51 | 52 | ## From Ecto.Changeset.validate_length/3 53 | msgid "should have %{count} item(s)" 54 | msgid_plural "should have %{count} item(s)" 55 | msgstr[0] "" 56 | msgstr[1] "" 57 | 58 | msgid "should be %{count} character(s)" 59 | msgid_plural "should be %{count} character(s)" 60 | msgstr[0] "" 61 | msgstr[1] "" 62 | 63 | msgid "should be %{count} byte(s)" 64 | msgid_plural "should be %{count} byte(s)" 65 | msgstr[0] "" 66 | msgstr[1] "" 67 | 68 | msgid "should have at least %{count} item(s)" 69 | msgid_plural "should have at least %{count} item(s)" 70 | msgstr[0] "" 71 | msgstr[1] "" 72 | 73 | msgid "should be at least %{count} character(s)" 74 | msgid_plural "should be at least %{count} character(s)" 75 | msgstr[0] "" 76 | msgstr[1] "" 77 | 78 | msgid "should be at least %{count} byte(s)" 79 | msgid_plural "should be at least %{count} byte(s)" 80 | msgstr[0] "" 81 | msgstr[1] "" 82 | 83 | msgid "should have at most %{count} item(s)" 84 | msgid_plural "should have at most %{count} item(s)" 85 | msgstr[0] "" 86 | msgstr[1] "" 87 | 88 | msgid "should be at most %{count} character(s)" 89 | msgid_plural "should be at most %{count} character(s)" 90 | msgstr[0] "" 91 | msgstr[1] "" 92 | 93 | msgid "should be at most %{count} byte(s)" 94 | msgid_plural "should be at most %{count} byte(s)" 95 | msgstr[0] "" 96 | msgstr[1] "" 97 | 98 | ## From Ecto.Changeset.validate_number/3 99 | msgid "must be less than %{number}" 100 | msgstr "" 101 | 102 | msgid "must be greater than %{number}" 103 | msgstr "" 104 | 105 | msgid "must be less than or equal to %{number}" 106 | msgstr "" 107 | 108 | msgid "must be greater than or equal to %{number}" 109 | msgstr "" 110 | 111 | msgid "must be equal to %{number}" 112 | msgstr "" 113 | -------------------------------------------------------------------------------- /priv/gettext/errors.pot: -------------------------------------------------------------------------------- 1 | ## This is a PO Template file. 2 | ## 3 | ## `msgid`s here are often extracted from source code. 4 | ## Add new translations manually only if they're dynamic 5 | ## translations that can't be statically extracted. 6 | ## 7 | ## Run `mix gettext.extract` to bring this file up to 8 | ## date. Leave `msgstr`s empty as changing them here has no 9 | ## effect: edit them in PO (`.po`) files instead. 10 | 11 | ## From Ecto.Changeset.cast/4 12 | msgid "can't be blank" 13 | msgstr "" 14 | 15 | ## From Ecto.Changeset.unique_constraint/3 16 | msgid "has already been taken" 17 | msgstr "" 18 | 19 | ## From Ecto.Changeset.put_change/3 20 | msgid "is invalid" 21 | msgstr "" 22 | 23 | ## From Ecto.Changeset.validate_acceptance/3 24 | msgid "must be accepted" 25 | msgstr "" 26 | 27 | ## From Ecto.Changeset.validate_format/3 28 | msgid "has invalid format" 29 | msgstr "" 30 | 31 | ## From Ecto.Changeset.validate_subset/3 32 | msgid "has an invalid entry" 33 | msgstr "" 34 | 35 | ## From Ecto.Changeset.validate_exclusion/3 36 | msgid "is reserved" 37 | msgstr "" 38 | 39 | ## From Ecto.Changeset.validate_confirmation/3 40 | msgid "does not match confirmation" 41 | msgstr "" 42 | 43 | ## From Ecto.Changeset.no_assoc_constraint/3 44 | msgid "is still associated with this entry" 45 | msgstr "" 46 | 47 | msgid "are still associated with this entry" 48 | msgstr "" 49 | 50 | ## From Ecto.Changeset.validate_length/3 51 | msgid "should have %{count} item(s)" 52 | msgid_plural "should have %{count} item(s)" 53 | msgstr[0] "" 54 | msgstr[1] "" 55 | 56 | msgid "should be %{count} character(s)" 57 | msgid_plural "should be %{count} character(s)" 58 | msgstr[0] "" 59 | msgstr[1] "" 60 | 61 | msgid "should be %{count} byte(s)" 62 | msgid_plural "should be %{count} byte(s)" 63 | msgstr[0] "" 64 | msgstr[1] "" 65 | 66 | msgid "should have at least %{count} item(s)" 67 | msgid_plural "should have at least %{count} item(s)" 68 | msgstr[0] "" 69 | msgstr[1] "" 70 | 71 | msgid "should be at least %{count} character(s)" 72 | msgid_plural "should be at least %{count} character(s)" 73 | msgstr[0] "" 74 | msgstr[1] "" 75 | 76 | msgid "should be at least %{count} byte(s)" 77 | msgid_plural "should be at least %{count} byte(s)" 78 | msgstr[0] "" 79 | msgstr[1] "" 80 | 81 | msgid "should have at most %{count} item(s)" 82 | msgid_plural "should have at most %{count} item(s)" 83 | msgstr[0] "" 84 | msgstr[1] "" 85 | 86 | msgid "should be at most %{count} character(s)" 87 | msgid_plural "should be at most %{count} character(s)" 88 | msgstr[0] "" 89 | msgstr[1] "" 90 | 91 | msgid "should be at most %{count} byte(s)" 92 | msgid_plural "should be at most %{count} byte(s)" 93 | msgstr[0] "" 94 | msgstr[1] "" 95 | 96 | ## From Ecto.Changeset.validate_number/3 97 | msgid "must be less than %{number}" 98 | msgstr "" 99 | 100 | msgid "must be greater than %{number}" 101 | msgstr "" 102 | 103 | msgid "must be less than or equal to %{number}" 104 | msgstr "" 105 | 106 | msgid "must be greater than or equal to %{number}" 107 | msgstr "" 108 | 109 | msgid "must be equal to %{number}" 110 | msgstr "" 111 | -------------------------------------------------------------------------------- /lib/forum_web/telemetry.ex: -------------------------------------------------------------------------------- 1 | defmodule ForumWeb.Telemetry do 2 | @moduledoc false 3 | 4 | use Supervisor 5 | import Telemetry.Metrics 6 | 7 | def start_link(arg) do 8 | Supervisor.start_link(__MODULE__, arg, name: __MODULE__) 9 | end 10 | 11 | @impl true 12 | def init(_arg) do 13 | children = [ 14 | # Telemetry poller will execute the given period measurements 15 | # every 10_000ms. Learn more here: https://hexdocs.pm/telemetry_metrics 16 | {:telemetry_poller, measurements: periodic_measurements(), period: 10_000} 17 | # Add reporters as children of your supervision tree. 18 | # {Telemetry.Metrics.ConsoleReporter, metrics: metrics()} 19 | ] 20 | 21 | Supervisor.init(children, strategy: :one_for_one) 22 | end 23 | 24 | def metrics do 25 | [ 26 | # Phoenix Metrics 27 | summary("phoenix.endpoint.start.system_time", 28 | unit: {:native, :millisecond} 29 | ), 30 | summary("phoenix.endpoint.stop.duration", 31 | unit: {:native, :millisecond} 32 | ), 33 | summary("phoenix.router_dispatch.start.system_time", 34 | tags: [:route], 35 | unit: {:native, :millisecond} 36 | ), 37 | summary("phoenix.router_dispatch.exception.duration", 38 | tags: [:route], 39 | unit: {:native, :millisecond} 40 | ), 41 | summary("phoenix.router_dispatch.stop.duration", 42 | tags: [:route], 43 | unit: {:native, :millisecond} 44 | ), 45 | summary("phoenix.socket_connected.duration", 46 | unit: {:native, :millisecond} 47 | ), 48 | summary("phoenix.channel_join.duration", 49 | unit: {:native, :millisecond} 50 | ), 51 | summary("phoenix.channel_handled_in.duration", 52 | tags: [:event], 53 | unit: {:native, :millisecond} 54 | ), 55 | 56 | # Database Metrics 57 | summary("forum.repo.query.total_time", 58 | unit: {:native, :millisecond}, 59 | description: "The sum of the other measurements" 60 | ), 61 | summary("forum.repo.query.decode_time", 62 | unit: {:native, :millisecond}, 63 | description: "The time spent decoding the data received from the database" 64 | ), 65 | summary("forum.repo.query.query_time", 66 | unit: {:native, :millisecond}, 67 | description: "The time spent executing the query" 68 | ), 69 | summary("forum.repo.query.queue_time", 70 | unit: {:native, :millisecond}, 71 | description: "The time spent waiting for a database connection" 72 | ), 73 | summary("forum.repo.query.idle_time", 74 | unit: {:native, :millisecond}, 75 | description: 76 | "The time the connection spent waiting before being checked out for the query" 77 | ), 78 | 79 | # VM Metrics 80 | summary("vm.memory.total", unit: {:byte, :kilobyte}), 81 | summary("vm.total_run_queue_lengths.total"), 82 | summary("vm.total_run_queue_lengths.cpu"), 83 | summary("vm.total_run_queue_lengths.io") 84 | ] 85 | end 86 | 87 | defp periodic_measurements do 88 | [ 89 | # A module, function and arguments to be invoked periodically. 90 | # This function must call :telemetry.execute/3 and a metric must be added above. 91 | # {ForumWeb, :count_users, []} 92 | ] 93 | end 94 | end 95 | -------------------------------------------------------------------------------- /config/runtime.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | 3 | # config/runtime.exs is executed for all environments, including 4 | # during releases. It is executed after compilation and before the 5 | # system starts, so it is typically used to load production configuration 6 | # and secrets from environment variables or elsewhere. Do not define 7 | # any compile-time configuration in here, as it won't be applied. 8 | # The block below contains prod specific runtime configuration. 9 | 10 | # ## Using releases 11 | # 12 | # If you use `mix release`, you need to explicitly enable the server 13 | # by passing the PHX_SERVER=true when you start it: 14 | # 15 | # PHX_SERVER=true bin/forum start 16 | # 17 | # Alternatively, you can use `mix phx.gen.release` to generate a `bin/server` 18 | # script that automatically sets the env var above. 19 | if System.get_env("PHX_SERVER") do 20 | config :forum, ForumWeb.Endpoint, server: true 21 | end 22 | 23 | if config_env() == :prod do 24 | database_url = 25 | System.get_env("DATABASE_URL") || 26 | raise """ 27 | environment variable DATABASE_URL is missing. 28 | For example: ecto://USER:PASS@HOST/DATABASE 29 | """ 30 | 31 | maybe_ipv6 = if System.get_env("ECTO_IPV6") in ~w(true 1), do: [:inet6], else: [] 32 | 33 | config :forum, Forum.Repo, 34 | # ssl: true, 35 | url: database_url, 36 | pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"), 37 | socket_options: maybe_ipv6 38 | 39 | # The secret key base is used to sign/encrypt cookies and other secrets. 40 | # A default value is used in config/dev.exs and config/test.exs but you 41 | # want to use a different value for prod and you most likely don't want 42 | # to check this value into version control, so we use an environment 43 | # variable instead. 44 | secret_key_base = 45 | System.get_env("SECRET_KEY_BASE") || 46 | raise """ 47 | environment variable SECRET_KEY_BASE is missing. 48 | You can generate one by calling: mix phx.gen.secret 49 | """ 50 | 51 | host = System.get_env("PHX_HOST") || "example.com" 52 | port = String.to_integer(System.get_env("PORT") || "4000") 53 | 54 | config :forum, ForumWeb.Endpoint, 55 | url: [host: host, port: 443, scheme: "https"], 56 | http: [ 57 | # Enable IPv6 and bind on all interfaces. 58 | # Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access. 59 | # See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html 60 | # for details about using IPv6 vs IPv4 and loopback vs public addresses. 61 | ip: {0, 0, 0, 0, 0, 0, 0, 0}, 62 | port: port 63 | ], 64 | secret_key_base: secret_key_base 65 | 66 | # ## SSL Support 67 | # 68 | # To get SSL working, you will need to add the `https` key 69 | # to your endpoint configuration: 70 | # 71 | # config :forum, ForumWeb.Endpoint, 72 | # https: [ 73 | # ..., 74 | # port: 443, 75 | # cipher_suite: :strong, 76 | # keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"), 77 | # certfile: System.get_env("SOME_APP_SSL_CERT_PATH") 78 | # ] 79 | # 80 | # The `cipher_suite` is set to `:strong` to support only the 81 | # latest and more secure SSL ciphers. This means old browsers 82 | # and clients may not be supported. You can set it to 83 | # `:compatible` for wider support. 84 | # 85 | # `:keyfile` and `:certfile` expect an absolute path to the key 86 | # and cert in disk or a relative path inside priv, for example 87 | # "priv/ssl/server.key". For all supported SSL configuration 88 | # options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1 89 | # 90 | # We also recommend setting `force_ssl` in your endpoint, ensuring 91 | # no data is ever sent via http, always redirecting to https: 92 | # 93 | # config :forum, ForumWeb.Endpoint, 94 | # force_ssl: [hsts: true] 95 | # 96 | # Check `Plug.SSL` for all available options in `force_ssl`. 97 | 98 | # ## Configuring the mailer 99 | # 100 | # In production you need to configure the mailer to use a different adapter. 101 | # Also, you may need to configure the Swoosh API client of your choice if you 102 | # are not using SMTP. Here is an example of the configuration: 103 | # 104 | # config :forum, Forum.Mailer, 105 | # adapter: Swoosh.Adapters.Mailgun, 106 | # api_key: System.get_env("MAILGUN_API_KEY"), 107 | # domain: System.get_env("MAILGUN_DOMAIN") 108 | # 109 | # For this example you need include a HTTP client required by Swoosh API client. 110 | # Swoosh supports Hackney and Finch out of the box: 111 | # 112 | # config :swoosh, :api_client, Swoosh.ApiClient.Hackney 113 | # 114 | # See https://hexdocs.pm/swoosh/Swoosh.html#module-installation for details. 115 | end 116 | -------------------------------------------------------------------------------- /.credo.exs: -------------------------------------------------------------------------------- 1 | # This file contains the configuration for Credo and you are probably reading 2 | # this after creating it with `mix credo.gen.config`. 3 | # 4 | # If you find anything wrong or unclear in this file, please report an 5 | # issue on GitHub: https://github.com/rrrene/credo/issues 6 | # 7 | %{ 8 | # 9 | # You can have as many configs as you like in the `configs:` field. 10 | configs: [ 11 | %{ 12 | # 13 | # Run any config using `mix credo -C `. If no config name is given 14 | # "default" is used. 15 | # 16 | name: "default", 17 | # 18 | # These are the files included in the analysis: 19 | files: %{ 20 | # 21 | # You can give explicit globs or simply directories. 22 | # In the latter case `**/*.{ex,exs}` will be used. 23 | # 24 | included: [ 25 | "lib/", 26 | "src/", 27 | "test/", 28 | "web/", 29 | "apps/*/lib/", 30 | "apps/*/src/", 31 | "apps/*/test/", 32 | "apps/*/web/" 33 | ], 34 | excluded: [~r"/_build/", ~r"/deps/", ~r"/node_modules/"] 35 | }, 36 | # 37 | # Load and configure plugins here: 38 | # 39 | plugins: [], 40 | # 41 | # If you create your own checks, you must specify the source files for 42 | # them here, so they can be loaded by Credo before running the analysis. 43 | # 44 | requires: [], 45 | # 46 | # If you want to enforce a style guide and need a more traditional linting 47 | # experience, you can change `strict` to `true` below: 48 | # 49 | strict: false, 50 | # 51 | # To modify the timeout for parsing files, change this value: 52 | # 53 | parse_timeout: 5000, 54 | # 55 | # If you want to use uncolored output by default, you can change `color` 56 | # to `false` below: 57 | # 58 | color: true, 59 | # 60 | # You can customize the parameters of any check by adding a second element 61 | # to the tuple. 62 | # 63 | # To disable a check put `false` as second element: 64 | # 65 | # {Credo.Check.Design.DuplicatedCode, false} 66 | # 67 | checks: %{ 68 | enabled: [ 69 | # 70 | ## Consistency Checks 71 | # 72 | {Credo.Check.Consistency.ExceptionNames, []}, 73 | {Credo.Check.Consistency.LineEndings, []}, 74 | {Credo.Check.Consistency.ParameterPatternMatching, []}, 75 | {Credo.Check.Consistency.SpaceAroundOperators, []}, 76 | {Credo.Check.Consistency.SpaceInParentheses, []}, 77 | {Credo.Check.Consistency.TabsOrSpaces, []}, 78 | 79 | # 80 | ## Design Checks 81 | # 82 | # You can customize the priority of any check 83 | # Priority values are: `low, normal, high, higher` 84 | # 85 | {Credo.Check.Design.AliasUsage, 86 | [priority: :low, if_nested_deeper_than: 2, if_called_more_often_than: 0]}, 87 | # You can also customize the exit_status of each check. 88 | # If you don't want TODO comments to cause `mix credo` to fail, just 89 | # set this value to 0 (zero). 90 | # 91 | {Credo.Check.Design.TagTODO, [exit_status: 2]}, 92 | {Credo.Check.Design.TagFIXME, []}, 93 | 94 | # 95 | ## Readability Checks 96 | # 97 | {Credo.Check.Readability.AliasOrder, []}, 98 | {Credo.Check.Readability.FunctionNames, []}, 99 | {Credo.Check.Readability.LargeNumbers, []}, 100 | {Credo.Check.Readability.MaxLineLength, [priority: :low, max_length: 120]}, 101 | {Credo.Check.Readability.ModuleAttributeNames, []}, 102 | {Credo.Check.Readability.ModuleDoc, []}, 103 | {Credo.Check.Readability.ModuleNames, []}, 104 | {Credo.Check.Readability.ParenthesesInCondition, []}, 105 | {Credo.Check.Readability.ParenthesesOnZeroArityDefs, []}, 106 | {Credo.Check.Readability.PipeIntoAnonymousFunctions, []}, 107 | {Credo.Check.Readability.PredicateFunctionNames, []}, 108 | {Credo.Check.Readability.PreferImplicitTry, []}, 109 | {Credo.Check.Readability.RedundantBlankLines, []}, 110 | {Credo.Check.Readability.Semicolons, []}, 111 | {Credo.Check.Readability.SpaceAfterCommas, []}, 112 | {Credo.Check.Readability.StringSigils, []}, 113 | {Credo.Check.Readability.TrailingBlankLine, []}, 114 | {Credo.Check.Readability.TrailingWhiteSpace, []}, 115 | {Credo.Check.Readability.UnnecessaryAliasExpansion, []}, 116 | {Credo.Check.Readability.VariableNames, []}, 117 | {Credo.Check.Readability.WithSingleClause, []}, 118 | 119 | # 120 | ## Refactoring Opportunities 121 | # 122 | {Credo.Check.Refactor.Apply, []}, 123 | {Credo.Check.Refactor.CondStatements, []}, 124 | {Credo.Check.Refactor.CyclomaticComplexity, []}, 125 | {Credo.Check.Refactor.FunctionArity, []}, 126 | {Credo.Check.Refactor.LongQuoteBlocks, []}, 127 | {Credo.Check.Refactor.MatchInCondition, []}, 128 | {Credo.Check.Refactor.MapJoin, []}, 129 | {Credo.Check.Refactor.NegatedConditionsInUnless, []}, 130 | {Credo.Check.Refactor.NegatedConditionsWithElse, []}, 131 | {Credo.Check.Refactor.Nesting, []}, 132 | {Credo.Check.Refactor.UnlessWithElse, []}, 133 | {Credo.Check.Refactor.WithClauses, []}, 134 | {Credo.Check.Refactor.FilterCount, []}, 135 | {Credo.Check.Refactor.FilterFilter, []}, 136 | {Credo.Check.Refactor.RejectReject, []}, 137 | {Credo.Check.Refactor.RedundantWithClauseResult, []}, 138 | 139 | # 140 | ## Warnings 141 | # 142 | {Credo.Check.Warning.ApplicationConfigInModuleAttribute, []}, 143 | {Credo.Check.Warning.BoolOperationOnSameValues, []}, 144 | {Credo.Check.Warning.Dbg, []}, 145 | {Credo.Check.Warning.ExpensiveEmptyEnumCheck, []}, 146 | {Credo.Check.Warning.IExPry, []}, 147 | {Credo.Check.Warning.IoInspect, []}, 148 | {Credo.Check.Warning.MissedMetadataKeyInLoggerConfig, []}, 149 | {Credo.Check.Warning.OperationOnSameValues, []}, 150 | {Credo.Check.Warning.OperationWithConstantResult, []}, 151 | {Credo.Check.Warning.RaiseInsideRescue, []}, 152 | {Credo.Check.Warning.SpecWithStruct, []}, 153 | {Credo.Check.Warning.WrongTestFileExtension, []}, 154 | {Credo.Check.Warning.UnusedEnumOperation, []}, 155 | {Credo.Check.Warning.UnusedFileOperation, []}, 156 | {Credo.Check.Warning.UnusedKeywordOperation, []}, 157 | {Credo.Check.Warning.UnusedListOperation, []}, 158 | {Credo.Check.Warning.UnusedPathOperation, []}, 159 | {Credo.Check.Warning.UnusedRegexOperation, []}, 160 | {Credo.Check.Warning.UnusedStringOperation, []}, 161 | {Credo.Check.Warning.UnusedTupleOperation, []}, 162 | {Credo.Check.Warning.UnsafeExec, []} 163 | ], 164 | disabled: [ 165 | # 166 | # Checks scheduled for next check update (opt-in for now, just replace `false` with `[]`) 167 | 168 | # 169 | # Controversial and experimental checks (opt-in, just move the check to `:enabled` 170 | # and be sure to use `mix credo --strict` to see low priority checks) 171 | # 172 | {Credo.Check.Consistency.MultiAliasImportRequireUse, []}, 173 | {Credo.Check.Consistency.UnusedVariableNames, []}, 174 | {Credo.Check.Design.DuplicatedCode, []}, 175 | {Credo.Check.Design.SkipTestWithoutComment, []}, 176 | {Credo.Check.Readability.AliasAs, []}, 177 | {Credo.Check.Readability.BlockPipe, []}, 178 | {Credo.Check.Readability.ImplTrue, []}, 179 | {Credo.Check.Readability.MultiAlias, []}, 180 | {Credo.Check.Readability.NestedFunctionCalls, []}, 181 | {Credo.Check.Readability.OneArityFunctionInPipe, []}, 182 | {Credo.Check.Readability.SeparateAliasRequire, []}, 183 | {Credo.Check.Readability.SingleFunctionToBlockPipe, []}, 184 | {Credo.Check.Readability.SinglePipe, []}, 185 | {Credo.Check.Readability.Specs, []}, 186 | {Credo.Check.Readability.StrictModuleLayout, []}, 187 | {Credo.Check.Readability.WithCustomTaggedTuple, []}, 188 | {Credo.Check.Readability.OnePipePerLine, []}, 189 | {Credo.Check.Refactor.ABCSize, []}, 190 | {Credo.Check.Refactor.AppendSingleItem, []}, 191 | {Credo.Check.Refactor.DoubleBooleanNegation, []}, 192 | {Credo.Check.Refactor.FilterReject, []}, 193 | {Credo.Check.Refactor.IoPuts, []}, 194 | {Credo.Check.Refactor.MapMap, []}, 195 | {Credo.Check.Refactor.ModuleDependencies, []}, 196 | {Credo.Check.Refactor.NegatedIsNil, []}, 197 | {Credo.Check.Refactor.PassAsyncInTestCases, []}, 198 | {Credo.Check.Refactor.PipeChainStart, []}, 199 | {Credo.Check.Refactor.RejectFilter, []}, 200 | {Credo.Check.Refactor.VariableRebinding, []}, 201 | {Credo.Check.Warning.LazyLogging, []}, 202 | {Credo.Check.Warning.LeakyEnvironment, []}, 203 | {Credo.Check.Warning.MapGetUnsafePass, []}, 204 | {Credo.Check.Warning.MixEnv, []}, 205 | {Credo.Check.Warning.UnsafeToAtom, []} 206 | 207 | # {Credo.Check.Refactor.MapInto, []}, 208 | 209 | # 210 | # Custom checks can be created using `mix credo.gen.check`. 211 | # 212 | ] 213 | } 214 | } 215 | ] 216 | } 217 | -------------------------------------------------------------------------------- /mix.lock: -------------------------------------------------------------------------------- 1 | %{ 2 | "bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"}, 3 | "castore": {:hex, :castore, "1.0.3", "7130ba6d24c8424014194676d608cb989f62ef8039efd50ff4b3f33286d06db8", [:mix], [], "hexpm", "680ab01ef5d15b161ed6a95449fac5c6b8f60055677a8e79acf01b27baa4390b"}, 4 | "cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"}, 5 | "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, 6 | "cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"}, 7 | "credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"}, 8 | "db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"}, 9 | "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"}, 10 | "dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"}, 11 | "ecto": {:hex, :ecto, "3.10.2", "6b887160281a61aa16843e47735b8a266caa437f80588c3ab80a8a960e6abe37", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6a895778f0d7648a4b34b486af59a1c8009041fbdf2b17f1ac215eb829c60235"}, 12 | "ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"}, 13 | "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, 14 | "expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"}, 15 | "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, 16 | "finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"}, 17 | "floki": {:hex, :floki, "0.34.3", "5e2dcaec5d7c228ce5b1d3501502e308b2d79eb655e4191751a1fe491c37feac", [:mix], [], "hexpm", "9577440eea5b97924b4bf3c7ea55f7b8b6dce589f9b28b096cc294a8dc342341"}, 18 | "gettext": {:hex, :gettext, "0.22.2", "6bfca374de34ecc913a28ba391ca184d88d77810a3e427afa8454a71a51341ac", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "8a2d389673aea82d7eae387e6a2ccc12660610080ae7beb19452cfdc1ec30f60"}, 19 | "hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"}, 20 | "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, 21 | "mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"}, 22 | "mint": {:hex, :mint, "1.5.1", "8db5239e56738552d85af398798c80648db0e90f343c8469f6c6d8898944fb6f", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "4a63e1e76a7c3956abd2c72f370a0d0aecddc3976dea5c27eccbecfa5e7d5b1e"}, 23 | "nimble_options": {:hex, :nimble_options, "1.0.2", "92098a74df0072ff37d0c12ace58574d26880e522c22801437151a159392270e", [:mix], [], "hexpm", "fd12a8db2021036ce12a309f26f564ec367373265b53e25403f0ee697380f1b8"}, 24 | "nimble_pool": {:hex, :nimble_pool, "1.0.0", "5eb82705d138f4dd4423f69ceb19ac667b3b492ae570c9f5c900bb3d2f50a847", [:mix], [], "hexpm", "80be3b882d2d351882256087078e1b1952a28bf98d0a287be87e4a24a710b67a"}, 25 | "phoenix": {:hex, :phoenix, "1.7.6", "61f0625af7c1d1923d582470446de29b008c0e07ae33d7a3859ede247ddaf59a", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "f6b4be7780402bb060cbc6e83f1b6d3f5673b674ba73cc4a7dd47db0322dfb88"}, 26 | "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.2", "b21bd01fdeffcfe2fab49e4942aa938b6d3e89e93a480d4aee58085560a0bc0d", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "70242edd4601d50b69273b057ecf7b684644c19ee750989fd555625ae4ce8f5d"}, 27 | "phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"}, 28 | "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.0", "0b3158b5b198aa444473c91d23d79f52fb077e807ffad80dacf88ce078fa8df2", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "87785a54474fed91a67a1227a741097eb1a42c2e49d3c0d098b588af65cd410d"}, 29 | "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"}, 30 | "phoenix_live_view": {:hex, :phoenix_live_view, "0.19.3", "3918c1b34df8ac71a9a636806ba5b7f053349a0392b312e16f35b0bf4d070aab", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "545626887948495fd8ea23d83b75bd7aaf9dc4221563e158d2c4b52ea1dd7e00"}, 31 | "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, 32 | "phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"}, 33 | "plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"}, 34 | "plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"}, 35 | "plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"}, 36 | "postgrex": {:hex, :postgrex, "0.17.1", "01c29fd1205940ee55f7addb8f1dc25618ca63a8817e56fac4f6846fc2cddcbe", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "14b057b488e73be2beee508fb1955d8db90d6485c6466428fe9ccf1d6692a555"}, 37 | "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, 38 | "swoosh": {:hex, :swoosh, "1.11.2", "39dd1e44f75bc03a34366d5f830599d248de2b9caaf05704dc76c0507a58c6a1", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4c43f4591503e7d5bf028314af8ac7c06d1c4d340aa23faeefabfa2543fa726e"}, 39 | "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, 40 | "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"}, 41 | "telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"}, 42 | "websock": {:hex, :websock, "0.5.2", "b3c08511d8d79ed2c2f589ff430bd1fe799bb389686dafce86d28801783d8351", [:mix], [], "hexpm", "925f5de22fca6813dfa980fb62fd542ec43a2d1a1f83d2caec907483fe66ff05"}, 43 | "websock_adapter": {:hex, :websock_adapter, "0.5.3", "4908718e42e4a548fc20e00e70848620a92f11f7a6add8cf0886c4232267498d", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "cbe5b814c1f86b6ea002b52dd99f345aeecf1a1a6964e209d208fb404d930d3d"}, 44 | } 45 | -------------------------------------------------------------------------------- /assets/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | devDependencies: 4 | '@babel/preset-env': 5 | specifier: ^7.22.5 6 | version: 7.22.5(@babel/core@7.22.5) 7 | babel-loader: 8 | specifier: ^9.1.2 9 | version: 9.1.2(@babel/core@7.22.5)(webpack@5.88.0) 10 | copy-webpack-plugin: 11 | specifier: ^11.0.0 12 | version: 11.0.0(webpack@5.88.0) 13 | cross-env: 14 | specifier: ^7.0.3 15 | version: 7.0.3 16 | css-loader: 17 | specifier: ^6.8.1 18 | version: 6.8.1(webpack@5.88.0) 19 | css-minimizer-webpack-plugin: 20 | specifier: ^5.0.1 21 | version: 5.0.1(webpack@5.88.0) 22 | glob: 23 | specifier: ^10.3.0 24 | version: 10.3.0 25 | mini-css-extract-plugin: 26 | specifier: ^2.7.6 27 | version: 2.7.6(webpack@5.88.0) 28 | sass: 29 | specifier: ^1.63.6 30 | version: 1.63.6 31 | sass-loader: 32 | specifier: ^13.3.2 33 | version: 13.3.2(sass@1.63.6)(webpack@5.88.0) 34 | webpack: 35 | specifier: ^5.88.0 36 | version: 5.88.0(webpack-cli@5.1.4) 37 | webpack-cli: 38 | specifier: ^5.1.4 39 | version: 5.1.4(webpack@5.88.0) 40 | 41 | packages: 42 | 43 | /@ampproject/remapping@2.2.1: 44 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 45 | engines: {node: '>=6.0.0'} 46 | dependencies: 47 | '@jridgewell/gen-mapping': 0.3.3 48 | '@jridgewell/trace-mapping': 0.3.18 49 | dev: true 50 | 51 | /@babel/code-frame@7.22.5: 52 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} 53 | engines: {node: '>=6.9.0'} 54 | dependencies: 55 | '@babel/highlight': 7.22.5 56 | dev: true 57 | 58 | /@babel/compat-data@7.22.5: 59 | resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} 60 | engines: {node: '>=6.9.0'} 61 | dev: true 62 | 63 | /@babel/core@7.22.5: 64 | resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} 65 | engines: {node: '>=6.9.0'} 66 | dependencies: 67 | '@ampproject/remapping': 2.2.1 68 | '@babel/code-frame': 7.22.5 69 | '@babel/generator': 7.22.5 70 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 71 | '@babel/helper-module-transforms': 7.22.5 72 | '@babel/helpers': 7.22.5 73 | '@babel/parser': 7.22.5 74 | '@babel/template': 7.22.5 75 | '@babel/traverse': 7.22.5 76 | '@babel/types': 7.22.5 77 | convert-source-map: 1.9.0 78 | debug: 4.3.4 79 | gensync: 1.0.0-beta.2 80 | json5: 2.2.3 81 | semver: 6.3.0 82 | transitivePeerDependencies: 83 | - supports-color 84 | dev: true 85 | 86 | /@babel/generator@7.22.5: 87 | resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} 88 | engines: {node: '>=6.9.0'} 89 | dependencies: 90 | '@babel/types': 7.22.5 91 | '@jridgewell/gen-mapping': 0.3.3 92 | '@jridgewell/trace-mapping': 0.3.18 93 | jsesc: 2.5.2 94 | dev: true 95 | 96 | /@babel/helper-annotate-as-pure@7.22.5: 97 | resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} 98 | engines: {node: '>=6.9.0'} 99 | dependencies: 100 | '@babel/types': 7.22.5 101 | dev: true 102 | 103 | /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: 104 | resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} 105 | engines: {node: '>=6.9.0'} 106 | dependencies: 107 | '@babel/types': 7.22.5 108 | dev: true 109 | 110 | /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): 111 | resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} 112 | engines: {node: '>=6.9.0'} 113 | peerDependencies: 114 | '@babel/core': ^7.0.0 115 | dependencies: 116 | '@babel/compat-data': 7.22.5 117 | '@babel/core': 7.22.5 118 | '@babel/helper-validator-option': 7.22.5 119 | browserslist: 4.21.9 120 | lru-cache: 5.1.1 121 | semver: 6.3.0 122 | dev: true 123 | 124 | /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): 125 | resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} 126 | engines: {node: '>=6.9.0'} 127 | peerDependencies: 128 | '@babel/core': ^7.0.0 129 | dependencies: 130 | '@babel/core': 7.22.5 131 | '@babel/helper-annotate-as-pure': 7.22.5 132 | '@babel/helper-environment-visitor': 7.22.5 133 | '@babel/helper-function-name': 7.22.5 134 | '@babel/helper-member-expression-to-functions': 7.22.5 135 | '@babel/helper-optimise-call-expression': 7.22.5 136 | '@babel/helper-replace-supers': 7.22.5 137 | '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 138 | '@babel/helper-split-export-declaration': 7.22.5 139 | semver: 6.3.0 140 | transitivePeerDependencies: 141 | - supports-color 142 | dev: true 143 | 144 | /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.5): 145 | resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} 146 | engines: {node: '>=6.9.0'} 147 | peerDependencies: 148 | '@babel/core': ^7.0.0 149 | dependencies: 150 | '@babel/core': 7.22.5 151 | '@babel/helper-annotate-as-pure': 7.22.5 152 | regexpu-core: 5.3.2 153 | semver: 6.3.0 154 | dev: true 155 | 156 | /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.5): 157 | resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} 158 | peerDependencies: 159 | '@babel/core': ^7.4.0-0 160 | dependencies: 161 | '@babel/core': 7.22.5 162 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 163 | '@babel/helper-plugin-utils': 7.22.5 164 | debug: 4.3.4 165 | lodash.debounce: 4.0.8 166 | resolve: 1.22.2 167 | semver: 6.3.0 168 | transitivePeerDependencies: 169 | - supports-color 170 | dev: true 171 | 172 | /@babel/helper-environment-visitor@7.22.5: 173 | resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} 174 | engines: {node: '>=6.9.0'} 175 | dev: true 176 | 177 | /@babel/helper-function-name@7.22.5: 178 | resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} 179 | engines: {node: '>=6.9.0'} 180 | dependencies: 181 | '@babel/template': 7.22.5 182 | '@babel/types': 7.22.5 183 | dev: true 184 | 185 | /@babel/helper-hoist-variables@7.22.5: 186 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 187 | engines: {node: '>=6.9.0'} 188 | dependencies: 189 | '@babel/types': 7.22.5 190 | dev: true 191 | 192 | /@babel/helper-member-expression-to-functions@7.22.5: 193 | resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} 194 | engines: {node: '>=6.9.0'} 195 | dependencies: 196 | '@babel/types': 7.22.5 197 | dev: true 198 | 199 | /@babel/helper-module-imports@7.22.5: 200 | resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} 201 | engines: {node: '>=6.9.0'} 202 | dependencies: 203 | '@babel/types': 7.22.5 204 | dev: true 205 | 206 | /@babel/helper-module-transforms@7.22.5: 207 | resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} 208 | engines: {node: '>=6.9.0'} 209 | dependencies: 210 | '@babel/helper-environment-visitor': 7.22.5 211 | '@babel/helper-module-imports': 7.22.5 212 | '@babel/helper-simple-access': 7.22.5 213 | '@babel/helper-split-export-declaration': 7.22.5 214 | '@babel/helper-validator-identifier': 7.22.5 215 | '@babel/template': 7.22.5 216 | '@babel/traverse': 7.22.5 217 | '@babel/types': 7.22.5 218 | transitivePeerDependencies: 219 | - supports-color 220 | dev: true 221 | 222 | /@babel/helper-optimise-call-expression@7.22.5: 223 | resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} 224 | engines: {node: '>=6.9.0'} 225 | dependencies: 226 | '@babel/types': 7.22.5 227 | dev: true 228 | 229 | /@babel/helper-plugin-utils@7.22.5: 230 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} 231 | engines: {node: '>=6.9.0'} 232 | dev: true 233 | 234 | /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.22.5): 235 | resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} 236 | engines: {node: '>=6.9.0'} 237 | peerDependencies: 238 | '@babel/core': ^7.0.0 239 | dependencies: 240 | '@babel/core': 7.22.5 241 | '@babel/helper-annotate-as-pure': 7.22.5 242 | '@babel/helper-environment-visitor': 7.22.5 243 | '@babel/helper-wrap-function': 7.22.5 244 | '@babel/types': 7.22.5 245 | transitivePeerDependencies: 246 | - supports-color 247 | dev: true 248 | 249 | /@babel/helper-replace-supers@7.22.5: 250 | resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} 251 | engines: {node: '>=6.9.0'} 252 | dependencies: 253 | '@babel/helper-environment-visitor': 7.22.5 254 | '@babel/helper-member-expression-to-functions': 7.22.5 255 | '@babel/helper-optimise-call-expression': 7.22.5 256 | '@babel/template': 7.22.5 257 | '@babel/traverse': 7.22.5 258 | '@babel/types': 7.22.5 259 | transitivePeerDependencies: 260 | - supports-color 261 | dev: true 262 | 263 | /@babel/helper-simple-access@7.22.5: 264 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 265 | engines: {node: '>=6.9.0'} 266 | dependencies: 267 | '@babel/types': 7.22.5 268 | dev: true 269 | 270 | /@babel/helper-skip-transparent-expression-wrappers@7.22.5: 271 | resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} 272 | engines: {node: '>=6.9.0'} 273 | dependencies: 274 | '@babel/types': 7.22.5 275 | dev: true 276 | 277 | /@babel/helper-split-export-declaration@7.22.5: 278 | resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} 279 | engines: {node: '>=6.9.0'} 280 | dependencies: 281 | '@babel/types': 7.22.5 282 | dev: true 283 | 284 | /@babel/helper-string-parser@7.22.5: 285 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 286 | engines: {node: '>=6.9.0'} 287 | dev: true 288 | 289 | /@babel/helper-validator-identifier@7.22.5: 290 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 291 | engines: {node: '>=6.9.0'} 292 | dev: true 293 | 294 | /@babel/helper-validator-option@7.22.5: 295 | resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} 296 | engines: {node: '>=6.9.0'} 297 | dev: true 298 | 299 | /@babel/helper-wrap-function@7.22.5: 300 | resolution: {integrity: sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==} 301 | engines: {node: '>=6.9.0'} 302 | dependencies: 303 | '@babel/helper-function-name': 7.22.5 304 | '@babel/template': 7.22.5 305 | '@babel/traverse': 7.22.5 306 | '@babel/types': 7.22.5 307 | transitivePeerDependencies: 308 | - supports-color 309 | dev: true 310 | 311 | /@babel/helpers@7.22.5: 312 | resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} 313 | engines: {node: '>=6.9.0'} 314 | dependencies: 315 | '@babel/template': 7.22.5 316 | '@babel/traverse': 7.22.5 317 | '@babel/types': 7.22.5 318 | transitivePeerDependencies: 319 | - supports-color 320 | dev: true 321 | 322 | /@babel/highlight@7.22.5: 323 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} 324 | engines: {node: '>=6.9.0'} 325 | dependencies: 326 | '@babel/helper-validator-identifier': 7.22.5 327 | chalk: 2.4.2 328 | js-tokens: 4.0.0 329 | dev: true 330 | 331 | /@babel/parser@7.22.5: 332 | resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} 333 | engines: {node: '>=6.0.0'} 334 | hasBin: true 335 | dependencies: 336 | '@babel/types': 7.22.5 337 | dev: true 338 | 339 | /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.5): 340 | resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} 341 | engines: {node: '>=6.9.0'} 342 | peerDependencies: 343 | '@babel/core': ^7.0.0 344 | dependencies: 345 | '@babel/core': 7.22.5 346 | '@babel/helper-plugin-utils': 7.22.5 347 | dev: true 348 | 349 | /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.5): 350 | resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} 351 | engines: {node: '>=6.9.0'} 352 | peerDependencies: 353 | '@babel/core': ^7.13.0 354 | dependencies: 355 | '@babel/core': 7.22.5 356 | '@babel/helper-plugin-utils': 7.22.5 357 | '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 358 | '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) 359 | dev: true 360 | 361 | /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5): 362 | resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} 363 | engines: {node: '>=6.9.0'} 364 | peerDependencies: 365 | '@babel/core': ^7.0.0-0 366 | dependencies: 367 | '@babel/core': 7.22.5 368 | dev: true 369 | 370 | /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): 371 | resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} 372 | engines: {node: '>=4'} 373 | peerDependencies: 374 | '@babel/core': ^7.0.0-0 375 | dependencies: 376 | '@babel/core': 7.22.5 377 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 378 | '@babel/helper-plugin-utils': 7.22.5 379 | dev: true 380 | 381 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): 382 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 383 | peerDependencies: 384 | '@babel/core': ^7.0.0-0 385 | dependencies: 386 | '@babel/core': 7.22.5 387 | '@babel/helper-plugin-utils': 7.22.5 388 | dev: true 389 | 390 | /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): 391 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 392 | peerDependencies: 393 | '@babel/core': ^7.0.0-0 394 | dependencies: 395 | '@babel/core': 7.22.5 396 | '@babel/helper-plugin-utils': 7.22.5 397 | dev: true 398 | 399 | /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): 400 | resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} 401 | engines: {node: '>=6.9.0'} 402 | peerDependencies: 403 | '@babel/core': ^7.0.0-0 404 | dependencies: 405 | '@babel/core': 7.22.5 406 | '@babel/helper-plugin-utils': 7.22.5 407 | dev: true 408 | 409 | /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): 410 | resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} 411 | peerDependencies: 412 | '@babel/core': ^7.0.0-0 413 | dependencies: 414 | '@babel/core': 7.22.5 415 | '@babel/helper-plugin-utils': 7.22.5 416 | dev: true 417 | 418 | /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): 419 | resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} 420 | peerDependencies: 421 | '@babel/core': ^7.0.0-0 422 | dependencies: 423 | '@babel/core': 7.22.5 424 | '@babel/helper-plugin-utils': 7.22.5 425 | dev: true 426 | 427 | /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): 428 | resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} 429 | engines: {node: '>=6.9.0'} 430 | peerDependencies: 431 | '@babel/core': ^7.0.0-0 432 | dependencies: 433 | '@babel/core': 7.22.5 434 | '@babel/helper-plugin-utils': 7.22.5 435 | dev: true 436 | 437 | /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): 438 | resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} 439 | engines: {node: '>=6.9.0'} 440 | peerDependencies: 441 | '@babel/core': ^7.0.0-0 442 | dependencies: 443 | '@babel/core': 7.22.5 444 | '@babel/helper-plugin-utils': 7.22.5 445 | dev: true 446 | 447 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): 448 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 449 | peerDependencies: 450 | '@babel/core': ^7.0.0-0 451 | dependencies: 452 | '@babel/core': 7.22.5 453 | '@babel/helper-plugin-utils': 7.22.5 454 | dev: true 455 | 456 | /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): 457 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 458 | peerDependencies: 459 | '@babel/core': ^7.0.0-0 460 | dependencies: 461 | '@babel/core': 7.22.5 462 | '@babel/helper-plugin-utils': 7.22.5 463 | dev: true 464 | 465 | /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): 466 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 467 | peerDependencies: 468 | '@babel/core': ^7.0.0-0 469 | dependencies: 470 | '@babel/core': 7.22.5 471 | '@babel/helper-plugin-utils': 7.22.5 472 | dev: true 473 | 474 | /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): 475 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 476 | peerDependencies: 477 | '@babel/core': ^7.0.0-0 478 | dependencies: 479 | '@babel/core': 7.22.5 480 | '@babel/helper-plugin-utils': 7.22.5 481 | dev: true 482 | 483 | /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): 484 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 485 | peerDependencies: 486 | '@babel/core': ^7.0.0-0 487 | dependencies: 488 | '@babel/core': 7.22.5 489 | '@babel/helper-plugin-utils': 7.22.5 490 | dev: true 491 | 492 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): 493 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 494 | peerDependencies: 495 | '@babel/core': ^7.0.0-0 496 | dependencies: 497 | '@babel/core': 7.22.5 498 | '@babel/helper-plugin-utils': 7.22.5 499 | dev: true 500 | 501 | /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): 502 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 503 | peerDependencies: 504 | '@babel/core': ^7.0.0-0 505 | dependencies: 506 | '@babel/core': 7.22.5 507 | '@babel/helper-plugin-utils': 7.22.5 508 | dev: true 509 | 510 | /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): 511 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 512 | peerDependencies: 513 | '@babel/core': ^7.0.0-0 514 | dependencies: 515 | '@babel/core': 7.22.5 516 | '@babel/helper-plugin-utils': 7.22.5 517 | dev: true 518 | 519 | /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): 520 | resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} 521 | engines: {node: '>=6.9.0'} 522 | peerDependencies: 523 | '@babel/core': ^7.0.0-0 524 | dependencies: 525 | '@babel/core': 7.22.5 526 | '@babel/helper-plugin-utils': 7.22.5 527 | dev: true 528 | 529 | /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): 530 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 531 | engines: {node: '>=6.9.0'} 532 | peerDependencies: 533 | '@babel/core': ^7.0.0-0 534 | dependencies: 535 | '@babel/core': 7.22.5 536 | '@babel/helper-plugin-utils': 7.22.5 537 | dev: true 538 | 539 | /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): 540 | resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} 541 | engines: {node: '>=6.9.0'} 542 | peerDependencies: 543 | '@babel/core': ^7.0.0 544 | dependencies: 545 | '@babel/core': 7.22.5 546 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 547 | '@babel/helper-plugin-utils': 7.22.5 548 | dev: true 549 | 550 | /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): 551 | resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} 552 | engines: {node: '>=6.9.0'} 553 | peerDependencies: 554 | '@babel/core': ^7.0.0-0 555 | dependencies: 556 | '@babel/core': 7.22.5 557 | '@babel/helper-plugin-utils': 7.22.5 558 | dev: true 559 | 560 | /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.22.5): 561 | resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} 562 | engines: {node: '>=6.9.0'} 563 | peerDependencies: 564 | '@babel/core': ^7.0.0-0 565 | dependencies: 566 | '@babel/core': 7.22.5 567 | '@babel/helper-environment-visitor': 7.22.5 568 | '@babel/helper-plugin-utils': 7.22.5 569 | '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) 570 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) 571 | transitivePeerDependencies: 572 | - supports-color 573 | dev: true 574 | 575 | /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.5): 576 | resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} 577 | engines: {node: '>=6.9.0'} 578 | peerDependencies: 579 | '@babel/core': ^7.0.0-0 580 | dependencies: 581 | '@babel/core': 7.22.5 582 | '@babel/helper-module-imports': 7.22.5 583 | '@babel/helper-plugin-utils': 7.22.5 584 | '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) 585 | transitivePeerDependencies: 586 | - supports-color 587 | dev: true 588 | 589 | /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): 590 | resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} 591 | engines: {node: '>=6.9.0'} 592 | peerDependencies: 593 | '@babel/core': ^7.0.0-0 594 | dependencies: 595 | '@babel/core': 7.22.5 596 | '@babel/helper-plugin-utils': 7.22.5 597 | dev: true 598 | 599 | /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): 600 | resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} 601 | engines: {node: '>=6.9.0'} 602 | peerDependencies: 603 | '@babel/core': ^7.0.0-0 604 | dependencies: 605 | '@babel/core': 7.22.5 606 | '@babel/helper-plugin-utils': 7.22.5 607 | dev: true 608 | 609 | /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.5): 610 | resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} 611 | engines: {node: '>=6.9.0'} 612 | peerDependencies: 613 | '@babel/core': ^7.0.0-0 614 | dependencies: 615 | '@babel/core': 7.22.5 616 | '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) 617 | '@babel/helper-plugin-utils': 7.22.5 618 | transitivePeerDependencies: 619 | - supports-color 620 | dev: true 621 | 622 | /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.5): 623 | resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} 624 | engines: {node: '>=6.9.0'} 625 | peerDependencies: 626 | '@babel/core': ^7.12.0 627 | dependencies: 628 | '@babel/core': 7.22.5 629 | '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) 630 | '@babel/helper-plugin-utils': 7.22.5 631 | '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) 632 | transitivePeerDependencies: 633 | - supports-color 634 | dev: true 635 | 636 | /@babel/plugin-transform-classes@7.22.5(@babel/core@7.22.5): 637 | resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} 638 | engines: {node: '>=6.9.0'} 639 | peerDependencies: 640 | '@babel/core': ^7.0.0-0 641 | dependencies: 642 | '@babel/core': 7.22.5 643 | '@babel/helper-annotate-as-pure': 7.22.5 644 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 645 | '@babel/helper-environment-visitor': 7.22.5 646 | '@babel/helper-function-name': 7.22.5 647 | '@babel/helper-optimise-call-expression': 7.22.5 648 | '@babel/helper-plugin-utils': 7.22.5 649 | '@babel/helper-replace-supers': 7.22.5 650 | '@babel/helper-split-export-declaration': 7.22.5 651 | globals: 11.12.0 652 | transitivePeerDependencies: 653 | - supports-color 654 | dev: true 655 | 656 | /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): 657 | resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} 658 | engines: {node: '>=6.9.0'} 659 | peerDependencies: 660 | '@babel/core': ^7.0.0-0 661 | dependencies: 662 | '@babel/core': 7.22.5 663 | '@babel/helper-plugin-utils': 7.22.5 664 | '@babel/template': 7.22.5 665 | dev: true 666 | 667 | /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): 668 | resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} 669 | engines: {node: '>=6.9.0'} 670 | peerDependencies: 671 | '@babel/core': ^7.0.0-0 672 | dependencies: 673 | '@babel/core': 7.22.5 674 | '@babel/helper-plugin-utils': 7.22.5 675 | dev: true 676 | 677 | /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.5): 678 | resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} 679 | engines: {node: '>=6.9.0'} 680 | peerDependencies: 681 | '@babel/core': ^7.0.0-0 682 | dependencies: 683 | '@babel/core': 7.22.5 684 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 685 | '@babel/helper-plugin-utils': 7.22.5 686 | dev: true 687 | 688 | /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.5): 689 | resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} 690 | engines: {node: '>=6.9.0'} 691 | peerDependencies: 692 | '@babel/core': ^7.0.0-0 693 | dependencies: 694 | '@babel/core': 7.22.5 695 | '@babel/helper-plugin-utils': 7.22.5 696 | dev: true 697 | 698 | /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.5): 699 | resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} 700 | engines: {node: '>=6.9.0'} 701 | peerDependencies: 702 | '@babel/core': ^7.0.0-0 703 | dependencies: 704 | '@babel/core': 7.22.5 705 | '@babel/helper-plugin-utils': 7.22.5 706 | '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) 707 | dev: true 708 | 709 | /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.5): 710 | resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} 711 | engines: {node: '>=6.9.0'} 712 | peerDependencies: 713 | '@babel/core': ^7.0.0-0 714 | dependencies: 715 | '@babel/core': 7.22.5 716 | '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 717 | '@babel/helper-plugin-utils': 7.22.5 718 | dev: true 719 | 720 | /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.5): 721 | resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} 722 | engines: {node: '>=6.9.0'} 723 | peerDependencies: 724 | '@babel/core': ^7.0.0-0 725 | dependencies: 726 | '@babel/core': 7.22.5 727 | '@babel/helper-plugin-utils': 7.22.5 728 | '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) 729 | dev: true 730 | 731 | /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.5): 732 | resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} 733 | engines: {node: '>=6.9.0'} 734 | peerDependencies: 735 | '@babel/core': ^7.0.0-0 736 | dependencies: 737 | '@babel/core': 7.22.5 738 | '@babel/helper-plugin-utils': 7.22.5 739 | dev: true 740 | 741 | /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): 742 | resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} 743 | engines: {node: '>=6.9.0'} 744 | peerDependencies: 745 | '@babel/core': ^7.0.0-0 746 | dependencies: 747 | '@babel/core': 7.22.5 748 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 749 | '@babel/helper-function-name': 7.22.5 750 | '@babel/helper-plugin-utils': 7.22.5 751 | dev: true 752 | 753 | /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.5): 754 | resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} 755 | engines: {node: '>=6.9.0'} 756 | peerDependencies: 757 | '@babel/core': ^7.0.0-0 758 | dependencies: 759 | '@babel/core': 7.22.5 760 | '@babel/helper-plugin-utils': 7.22.5 761 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) 762 | dev: true 763 | 764 | /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): 765 | resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} 766 | engines: {node: '>=6.9.0'} 767 | peerDependencies: 768 | '@babel/core': ^7.0.0-0 769 | dependencies: 770 | '@babel/core': 7.22.5 771 | '@babel/helper-plugin-utils': 7.22.5 772 | dev: true 773 | 774 | /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.5): 775 | resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} 776 | engines: {node: '>=6.9.0'} 777 | peerDependencies: 778 | '@babel/core': ^7.0.0-0 779 | dependencies: 780 | '@babel/core': 7.22.5 781 | '@babel/helper-plugin-utils': 7.22.5 782 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) 783 | dev: true 784 | 785 | /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): 786 | resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} 787 | engines: {node: '>=6.9.0'} 788 | peerDependencies: 789 | '@babel/core': ^7.0.0-0 790 | dependencies: 791 | '@babel/core': 7.22.5 792 | '@babel/helper-plugin-utils': 7.22.5 793 | dev: true 794 | 795 | /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.5): 796 | resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} 797 | engines: {node: '>=6.9.0'} 798 | peerDependencies: 799 | '@babel/core': ^7.0.0-0 800 | dependencies: 801 | '@babel/core': 7.22.5 802 | '@babel/helper-module-transforms': 7.22.5 803 | '@babel/helper-plugin-utils': 7.22.5 804 | transitivePeerDependencies: 805 | - supports-color 806 | dev: true 807 | 808 | /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): 809 | resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} 810 | engines: {node: '>=6.9.0'} 811 | peerDependencies: 812 | '@babel/core': ^7.0.0-0 813 | dependencies: 814 | '@babel/core': 7.22.5 815 | '@babel/helper-module-transforms': 7.22.5 816 | '@babel/helper-plugin-utils': 7.22.5 817 | '@babel/helper-simple-access': 7.22.5 818 | transitivePeerDependencies: 819 | - supports-color 820 | dev: true 821 | 822 | /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.5): 823 | resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} 824 | engines: {node: '>=6.9.0'} 825 | peerDependencies: 826 | '@babel/core': ^7.0.0-0 827 | dependencies: 828 | '@babel/core': 7.22.5 829 | '@babel/helper-hoist-variables': 7.22.5 830 | '@babel/helper-module-transforms': 7.22.5 831 | '@babel/helper-plugin-utils': 7.22.5 832 | '@babel/helper-validator-identifier': 7.22.5 833 | transitivePeerDependencies: 834 | - supports-color 835 | dev: true 836 | 837 | /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.5): 838 | resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} 839 | engines: {node: '>=6.9.0'} 840 | peerDependencies: 841 | '@babel/core': ^7.0.0-0 842 | dependencies: 843 | '@babel/core': 7.22.5 844 | '@babel/helper-module-transforms': 7.22.5 845 | '@babel/helper-plugin-utils': 7.22.5 846 | transitivePeerDependencies: 847 | - supports-color 848 | dev: true 849 | 850 | /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5): 851 | resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} 852 | engines: {node: '>=6.9.0'} 853 | peerDependencies: 854 | '@babel/core': ^7.0.0 855 | dependencies: 856 | '@babel/core': 7.22.5 857 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 858 | '@babel/helper-plugin-utils': 7.22.5 859 | dev: true 860 | 861 | /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.5): 862 | resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} 863 | engines: {node: '>=6.9.0'} 864 | peerDependencies: 865 | '@babel/core': ^7.0.0-0 866 | dependencies: 867 | '@babel/core': 7.22.5 868 | '@babel/helper-plugin-utils': 7.22.5 869 | dev: true 870 | 871 | /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.5): 872 | resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} 873 | engines: {node: '>=6.9.0'} 874 | peerDependencies: 875 | '@babel/core': ^7.0.0-0 876 | dependencies: 877 | '@babel/core': 7.22.5 878 | '@babel/helper-plugin-utils': 7.22.5 879 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) 880 | dev: true 881 | 882 | /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.5): 883 | resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} 884 | engines: {node: '>=6.9.0'} 885 | peerDependencies: 886 | '@babel/core': ^7.0.0-0 887 | dependencies: 888 | '@babel/core': 7.22.5 889 | '@babel/helper-plugin-utils': 7.22.5 890 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) 891 | dev: true 892 | 893 | /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.5): 894 | resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} 895 | engines: {node: '>=6.9.0'} 896 | peerDependencies: 897 | '@babel/core': ^7.0.0-0 898 | dependencies: 899 | '@babel/compat-data': 7.22.5 900 | '@babel/core': 7.22.5 901 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 902 | '@babel/helper-plugin-utils': 7.22.5 903 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) 904 | '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) 905 | dev: true 906 | 907 | /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): 908 | resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} 909 | engines: {node: '>=6.9.0'} 910 | peerDependencies: 911 | '@babel/core': ^7.0.0-0 912 | dependencies: 913 | '@babel/core': 7.22.5 914 | '@babel/helper-plugin-utils': 7.22.5 915 | '@babel/helper-replace-supers': 7.22.5 916 | transitivePeerDependencies: 917 | - supports-color 918 | dev: true 919 | 920 | /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.5): 921 | resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} 922 | engines: {node: '>=6.9.0'} 923 | peerDependencies: 924 | '@babel/core': ^7.0.0-0 925 | dependencies: 926 | '@babel/core': 7.22.5 927 | '@babel/helper-plugin-utils': 7.22.5 928 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) 929 | dev: true 930 | 931 | /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.22.5): 932 | resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} 933 | engines: {node: '>=6.9.0'} 934 | peerDependencies: 935 | '@babel/core': ^7.0.0-0 936 | dependencies: 937 | '@babel/core': 7.22.5 938 | '@babel/helper-plugin-utils': 7.22.5 939 | '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 940 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) 941 | dev: true 942 | 943 | /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.5): 944 | resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} 945 | engines: {node: '>=6.9.0'} 946 | peerDependencies: 947 | '@babel/core': ^7.0.0-0 948 | dependencies: 949 | '@babel/core': 7.22.5 950 | '@babel/helper-plugin-utils': 7.22.5 951 | dev: true 952 | 953 | /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.5): 954 | resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} 955 | engines: {node: '>=6.9.0'} 956 | peerDependencies: 957 | '@babel/core': ^7.0.0-0 958 | dependencies: 959 | '@babel/core': 7.22.5 960 | '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) 961 | '@babel/helper-plugin-utils': 7.22.5 962 | transitivePeerDependencies: 963 | - supports-color 964 | dev: true 965 | 966 | /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.5): 967 | resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} 968 | engines: {node: '>=6.9.0'} 969 | peerDependencies: 970 | '@babel/core': ^7.0.0-0 971 | dependencies: 972 | '@babel/core': 7.22.5 973 | '@babel/helper-annotate-as-pure': 7.22.5 974 | '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) 975 | '@babel/helper-plugin-utils': 7.22.5 976 | '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) 977 | transitivePeerDependencies: 978 | - supports-color 979 | dev: true 980 | 981 | /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): 982 | resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} 983 | engines: {node: '>=6.9.0'} 984 | peerDependencies: 985 | '@babel/core': ^7.0.0-0 986 | dependencies: 987 | '@babel/core': 7.22.5 988 | '@babel/helper-plugin-utils': 7.22.5 989 | dev: true 990 | 991 | /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.5): 992 | resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} 993 | engines: {node: '>=6.9.0'} 994 | peerDependencies: 995 | '@babel/core': ^7.0.0-0 996 | dependencies: 997 | '@babel/core': 7.22.5 998 | '@babel/helper-plugin-utils': 7.22.5 999 | regenerator-transform: 0.15.1 1000 | dev: true 1001 | 1002 | /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.5): 1003 | resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} 1004 | engines: {node: '>=6.9.0'} 1005 | peerDependencies: 1006 | '@babel/core': ^7.0.0-0 1007 | dependencies: 1008 | '@babel/core': 7.22.5 1009 | '@babel/helper-plugin-utils': 7.22.5 1010 | dev: true 1011 | 1012 | /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.5): 1013 | resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} 1014 | engines: {node: '>=6.9.0'} 1015 | peerDependencies: 1016 | '@babel/core': ^7.0.0-0 1017 | dependencies: 1018 | '@babel/core': 7.22.5 1019 | '@babel/helper-plugin-utils': 7.22.5 1020 | dev: true 1021 | 1022 | /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): 1023 | resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} 1024 | engines: {node: '>=6.9.0'} 1025 | peerDependencies: 1026 | '@babel/core': ^7.0.0-0 1027 | dependencies: 1028 | '@babel/core': 7.22.5 1029 | '@babel/helper-plugin-utils': 7.22.5 1030 | '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 1031 | dev: true 1032 | 1033 | /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.5): 1034 | resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} 1035 | engines: {node: '>=6.9.0'} 1036 | peerDependencies: 1037 | '@babel/core': ^7.0.0-0 1038 | dependencies: 1039 | '@babel/core': 7.22.5 1040 | '@babel/helper-plugin-utils': 7.22.5 1041 | dev: true 1042 | 1043 | /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): 1044 | resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} 1045 | engines: {node: '>=6.9.0'} 1046 | peerDependencies: 1047 | '@babel/core': ^7.0.0-0 1048 | dependencies: 1049 | '@babel/core': 7.22.5 1050 | '@babel/helper-plugin-utils': 7.22.5 1051 | dev: true 1052 | 1053 | /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.5): 1054 | resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} 1055 | engines: {node: '>=6.9.0'} 1056 | peerDependencies: 1057 | '@babel/core': ^7.0.0-0 1058 | dependencies: 1059 | '@babel/core': 7.22.5 1060 | '@babel/helper-plugin-utils': 7.22.5 1061 | dev: true 1062 | 1063 | /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.5): 1064 | resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} 1065 | engines: {node: '>=6.9.0'} 1066 | peerDependencies: 1067 | '@babel/core': ^7.0.0-0 1068 | dependencies: 1069 | '@babel/core': 7.22.5 1070 | '@babel/helper-plugin-utils': 7.22.5 1071 | dev: true 1072 | 1073 | /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.5): 1074 | resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} 1075 | engines: {node: '>=6.9.0'} 1076 | peerDependencies: 1077 | '@babel/core': ^7.0.0-0 1078 | dependencies: 1079 | '@babel/core': 7.22.5 1080 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 1081 | '@babel/helper-plugin-utils': 7.22.5 1082 | dev: true 1083 | 1084 | /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.5): 1085 | resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} 1086 | engines: {node: '>=6.9.0'} 1087 | peerDependencies: 1088 | '@babel/core': ^7.0.0-0 1089 | dependencies: 1090 | '@babel/core': 7.22.5 1091 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 1092 | '@babel/helper-plugin-utils': 7.22.5 1093 | dev: true 1094 | 1095 | /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.5): 1096 | resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} 1097 | engines: {node: '>=6.9.0'} 1098 | peerDependencies: 1099 | '@babel/core': ^7.0.0 1100 | dependencies: 1101 | '@babel/core': 7.22.5 1102 | '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) 1103 | '@babel/helper-plugin-utils': 7.22.5 1104 | dev: true 1105 | 1106 | /@babel/preset-env@7.22.5(@babel/core@7.22.5): 1107 | resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} 1108 | engines: {node: '>=6.9.0'} 1109 | peerDependencies: 1110 | '@babel/core': ^7.0.0-0 1111 | dependencies: 1112 | '@babel/compat-data': 7.22.5 1113 | '@babel/core': 7.22.5 1114 | '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) 1115 | '@babel/helper-plugin-utils': 7.22.5 1116 | '@babel/helper-validator-option': 7.22.5 1117 | '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.5) 1118 | '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.5) 1119 | '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5) 1120 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) 1121 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) 1122 | '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) 1123 | '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) 1124 | '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) 1125 | '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.5) 1126 | '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.5) 1127 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) 1128 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) 1129 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) 1130 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) 1131 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) 1132 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) 1133 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) 1134 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) 1135 | '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) 1136 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) 1137 | '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5) 1138 | '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) 1139 | '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.22.5) 1140 | '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.5) 1141 | '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.5) 1142 | '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) 1143 | '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.5) 1144 | '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.5) 1145 | '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) 1146 | '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) 1147 | '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) 1148 | '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) 1149 | '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.5) 1150 | '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.5) 1151 | '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.5) 1152 | '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.5) 1153 | '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) 1154 | '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) 1155 | '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.5) 1156 | '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) 1157 | '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.5) 1158 | '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.5) 1159 | '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.5) 1160 | '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) 1161 | '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.5) 1162 | '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.5) 1163 | '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.5) 1164 | '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.5) 1165 | '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.5) 1166 | '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.5) 1167 | '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.5) 1168 | '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.5) 1169 | '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.5) 1170 | '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) 1171 | '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) 1172 | '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.5) 1173 | '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.5) 1174 | '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.5) 1175 | '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.5) 1176 | '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.5) 1177 | '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) 1178 | '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) 1179 | '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.5) 1180 | '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.5) 1181 | '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.5) 1182 | '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.5) 1183 | '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.5) 1184 | '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.5) 1185 | '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.5) 1186 | '@babel/preset-modules': 0.1.5(@babel/core@7.22.5) 1187 | '@babel/types': 7.22.5 1188 | babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) 1189 | babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) 1190 | babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) 1191 | core-js-compat: 3.31.0 1192 | semver: 6.3.0 1193 | transitivePeerDependencies: 1194 | - supports-color 1195 | dev: true 1196 | 1197 | /@babel/preset-modules@0.1.5(@babel/core@7.22.5): 1198 | resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} 1199 | peerDependencies: 1200 | '@babel/core': ^7.0.0-0 1201 | dependencies: 1202 | '@babel/core': 7.22.5 1203 | '@babel/helper-plugin-utils': 7.22.5 1204 | '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) 1205 | '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) 1206 | '@babel/types': 7.22.5 1207 | esutils: 2.0.3 1208 | dev: true 1209 | 1210 | /@babel/regjsgen@0.8.0: 1211 | resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} 1212 | dev: true 1213 | 1214 | /@babel/runtime@7.22.5: 1215 | resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} 1216 | engines: {node: '>=6.9.0'} 1217 | dependencies: 1218 | regenerator-runtime: 0.13.11 1219 | dev: true 1220 | 1221 | /@babel/template@7.22.5: 1222 | resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} 1223 | engines: {node: '>=6.9.0'} 1224 | dependencies: 1225 | '@babel/code-frame': 7.22.5 1226 | '@babel/parser': 7.22.5 1227 | '@babel/types': 7.22.5 1228 | dev: true 1229 | 1230 | /@babel/traverse@7.22.5: 1231 | resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} 1232 | engines: {node: '>=6.9.0'} 1233 | dependencies: 1234 | '@babel/code-frame': 7.22.5 1235 | '@babel/generator': 7.22.5 1236 | '@babel/helper-environment-visitor': 7.22.5 1237 | '@babel/helper-function-name': 7.22.5 1238 | '@babel/helper-hoist-variables': 7.22.5 1239 | '@babel/helper-split-export-declaration': 7.22.5 1240 | '@babel/parser': 7.22.5 1241 | '@babel/types': 7.22.5 1242 | debug: 4.3.4 1243 | globals: 11.12.0 1244 | transitivePeerDependencies: 1245 | - supports-color 1246 | dev: true 1247 | 1248 | /@babel/types@7.22.5: 1249 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} 1250 | engines: {node: '>=6.9.0'} 1251 | dependencies: 1252 | '@babel/helper-string-parser': 7.22.5 1253 | '@babel/helper-validator-identifier': 7.22.5 1254 | to-fast-properties: 2.0.0 1255 | dev: true 1256 | 1257 | /@discoveryjs/json-ext@0.5.7: 1258 | resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} 1259 | engines: {node: '>=10.0.0'} 1260 | dev: true 1261 | 1262 | /@isaacs/cliui@8.0.2: 1263 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 1264 | engines: {node: '>=12'} 1265 | dependencies: 1266 | string-width: 5.1.2 1267 | string-width-cjs: /string-width@4.2.3 1268 | strip-ansi: 7.1.0 1269 | strip-ansi-cjs: /strip-ansi@6.0.1 1270 | wrap-ansi: 8.1.0 1271 | wrap-ansi-cjs: /wrap-ansi@7.0.0 1272 | dev: true 1273 | 1274 | /@jest/schemas@29.4.3: 1275 | resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} 1276 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1277 | dependencies: 1278 | '@sinclair/typebox': 0.25.24 1279 | dev: true 1280 | 1281 | /@jest/types@29.5.0: 1282 | resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} 1283 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1284 | dependencies: 1285 | '@jest/schemas': 29.4.3 1286 | '@types/istanbul-lib-coverage': 2.0.4 1287 | '@types/istanbul-reports': 3.0.1 1288 | '@types/node': 20.3.1 1289 | '@types/yargs': 17.0.24 1290 | chalk: 4.1.2 1291 | dev: true 1292 | 1293 | /@jridgewell/gen-mapping@0.3.3: 1294 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 1295 | engines: {node: '>=6.0.0'} 1296 | dependencies: 1297 | '@jridgewell/set-array': 1.1.2 1298 | '@jridgewell/sourcemap-codec': 1.4.15 1299 | '@jridgewell/trace-mapping': 0.3.18 1300 | dev: true 1301 | 1302 | /@jridgewell/resolve-uri@3.1.0: 1303 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 1304 | engines: {node: '>=6.0.0'} 1305 | dev: true 1306 | 1307 | /@jridgewell/set-array@1.1.2: 1308 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 1309 | engines: {node: '>=6.0.0'} 1310 | dev: true 1311 | 1312 | /@jridgewell/source-map@0.3.3: 1313 | resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} 1314 | dependencies: 1315 | '@jridgewell/gen-mapping': 0.3.3 1316 | '@jridgewell/trace-mapping': 0.3.18 1317 | dev: true 1318 | 1319 | /@jridgewell/sourcemap-codec@1.4.14: 1320 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 1321 | dev: true 1322 | 1323 | /@jridgewell/sourcemap-codec@1.4.15: 1324 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 1325 | dev: true 1326 | 1327 | /@jridgewell/trace-mapping@0.3.18: 1328 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 1329 | dependencies: 1330 | '@jridgewell/resolve-uri': 3.1.0 1331 | '@jridgewell/sourcemap-codec': 1.4.14 1332 | dev: true 1333 | 1334 | /@nodelib/fs.scandir@2.1.5: 1335 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 1336 | engines: {node: '>= 8'} 1337 | dependencies: 1338 | '@nodelib/fs.stat': 2.0.5 1339 | run-parallel: 1.2.0 1340 | dev: true 1341 | 1342 | /@nodelib/fs.stat@2.0.5: 1343 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 1344 | engines: {node: '>= 8'} 1345 | dev: true 1346 | 1347 | /@nodelib/fs.walk@1.2.8: 1348 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 1349 | engines: {node: '>= 8'} 1350 | dependencies: 1351 | '@nodelib/fs.scandir': 2.1.5 1352 | fastq: 1.15.0 1353 | dev: true 1354 | 1355 | /@pkgjs/parseargs@0.11.0: 1356 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 1357 | engines: {node: '>=14'} 1358 | requiresBuild: true 1359 | dev: true 1360 | optional: true 1361 | 1362 | /@sinclair/typebox@0.25.24: 1363 | resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} 1364 | dev: true 1365 | 1366 | /@trysound/sax@0.2.0: 1367 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} 1368 | engines: {node: '>=10.13.0'} 1369 | dev: true 1370 | 1371 | /@types/eslint-scope@3.7.4: 1372 | resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} 1373 | dependencies: 1374 | '@types/eslint': 8.40.2 1375 | '@types/estree': 1.0.1 1376 | dev: true 1377 | 1378 | /@types/eslint@8.40.2: 1379 | resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} 1380 | dependencies: 1381 | '@types/estree': 1.0.1 1382 | '@types/json-schema': 7.0.12 1383 | dev: true 1384 | 1385 | /@types/estree@1.0.1: 1386 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 1387 | dev: true 1388 | 1389 | /@types/istanbul-lib-coverage@2.0.4: 1390 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 1391 | dev: true 1392 | 1393 | /@types/istanbul-lib-report@3.0.0: 1394 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 1395 | dependencies: 1396 | '@types/istanbul-lib-coverage': 2.0.4 1397 | dev: true 1398 | 1399 | /@types/istanbul-reports@3.0.1: 1400 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 1401 | dependencies: 1402 | '@types/istanbul-lib-report': 3.0.0 1403 | dev: true 1404 | 1405 | /@types/json-schema@7.0.12: 1406 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} 1407 | dev: true 1408 | 1409 | /@types/node@20.3.1: 1410 | resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} 1411 | dev: true 1412 | 1413 | /@types/yargs-parser@21.0.0: 1414 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 1415 | dev: true 1416 | 1417 | /@types/yargs@17.0.24: 1418 | resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} 1419 | dependencies: 1420 | '@types/yargs-parser': 21.0.0 1421 | dev: true 1422 | 1423 | /@webassemblyjs/ast@1.11.6: 1424 | resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} 1425 | dependencies: 1426 | '@webassemblyjs/helper-numbers': 1.11.6 1427 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1428 | dev: true 1429 | 1430 | /@webassemblyjs/floating-point-hex-parser@1.11.6: 1431 | resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} 1432 | dev: true 1433 | 1434 | /@webassemblyjs/helper-api-error@1.11.6: 1435 | resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} 1436 | dev: true 1437 | 1438 | /@webassemblyjs/helper-buffer@1.11.6: 1439 | resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} 1440 | dev: true 1441 | 1442 | /@webassemblyjs/helper-numbers@1.11.6: 1443 | resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} 1444 | dependencies: 1445 | '@webassemblyjs/floating-point-hex-parser': 1.11.6 1446 | '@webassemblyjs/helper-api-error': 1.11.6 1447 | '@xtuc/long': 4.2.2 1448 | dev: true 1449 | 1450 | /@webassemblyjs/helper-wasm-bytecode@1.11.6: 1451 | resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} 1452 | dev: true 1453 | 1454 | /@webassemblyjs/helper-wasm-section@1.11.6: 1455 | resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} 1456 | dependencies: 1457 | '@webassemblyjs/ast': 1.11.6 1458 | '@webassemblyjs/helper-buffer': 1.11.6 1459 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1460 | '@webassemblyjs/wasm-gen': 1.11.6 1461 | dev: true 1462 | 1463 | /@webassemblyjs/ieee754@1.11.6: 1464 | resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} 1465 | dependencies: 1466 | '@xtuc/ieee754': 1.2.0 1467 | dev: true 1468 | 1469 | /@webassemblyjs/leb128@1.11.6: 1470 | resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} 1471 | dependencies: 1472 | '@xtuc/long': 4.2.2 1473 | dev: true 1474 | 1475 | /@webassemblyjs/utf8@1.11.6: 1476 | resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} 1477 | dev: true 1478 | 1479 | /@webassemblyjs/wasm-edit@1.11.6: 1480 | resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} 1481 | dependencies: 1482 | '@webassemblyjs/ast': 1.11.6 1483 | '@webassemblyjs/helper-buffer': 1.11.6 1484 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1485 | '@webassemblyjs/helper-wasm-section': 1.11.6 1486 | '@webassemblyjs/wasm-gen': 1.11.6 1487 | '@webassemblyjs/wasm-opt': 1.11.6 1488 | '@webassemblyjs/wasm-parser': 1.11.6 1489 | '@webassemblyjs/wast-printer': 1.11.6 1490 | dev: true 1491 | 1492 | /@webassemblyjs/wasm-gen@1.11.6: 1493 | resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} 1494 | dependencies: 1495 | '@webassemblyjs/ast': 1.11.6 1496 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1497 | '@webassemblyjs/ieee754': 1.11.6 1498 | '@webassemblyjs/leb128': 1.11.6 1499 | '@webassemblyjs/utf8': 1.11.6 1500 | dev: true 1501 | 1502 | /@webassemblyjs/wasm-opt@1.11.6: 1503 | resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} 1504 | dependencies: 1505 | '@webassemblyjs/ast': 1.11.6 1506 | '@webassemblyjs/helper-buffer': 1.11.6 1507 | '@webassemblyjs/wasm-gen': 1.11.6 1508 | '@webassemblyjs/wasm-parser': 1.11.6 1509 | dev: true 1510 | 1511 | /@webassemblyjs/wasm-parser@1.11.6: 1512 | resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} 1513 | dependencies: 1514 | '@webassemblyjs/ast': 1.11.6 1515 | '@webassemblyjs/helper-api-error': 1.11.6 1516 | '@webassemblyjs/helper-wasm-bytecode': 1.11.6 1517 | '@webassemblyjs/ieee754': 1.11.6 1518 | '@webassemblyjs/leb128': 1.11.6 1519 | '@webassemblyjs/utf8': 1.11.6 1520 | dev: true 1521 | 1522 | /@webassemblyjs/wast-printer@1.11.6: 1523 | resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} 1524 | dependencies: 1525 | '@webassemblyjs/ast': 1.11.6 1526 | '@xtuc/long': 4.2.2 1527 | dev: true 1528 | 1529 | /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.0): 1530 | resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} 1531 | engines: {node: '>=14.15.0'} 1532 | peerDependencies: 1533 | webpack: 5.x.x 1534 | webpack-cli: 5.x.x 1535 | dependencies: 1536 | webpack: 5.88.0(webpack-cli@5.1.4) 1537 | webpack-cli: 5.1.4(webpack@5.88.0) 1538 | dev: true 1539 | 1540 | /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.0): 1541 | resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} 1542 | engines: {node: '>=14.15.0'} 1543 | peerDependencies: 1544 | webpack: 5.x.x 1545 | webpack-cli: 5.x.x 1546 | dependencies: 1547 | webpack: 5.88.0(webpack-cli@5.1.4) 1548 | webpack-cli: 5.1.4(webpack@5.88.0) 1549 | dev: true 1550 | 1551 | /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.0): 1552 | resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} 1553 | engines: {node: '>=14.15.0'} 1554 | peerDependencies: 1555 | webpack: 5.x.x 1556 | webpack-cli: 5.x.x 1557 | webpack-dev-server: '*' 1558 | peerDependenciesMeta: 1559 | webpack-dev-server: 1560 | optional: true 1561 | dependencies: 1562 | webpack: 5.88.0(webpack-cli@5.1.4) 1563 | webpack-cli: 5.1.4(webpack@5.88.0) 1564 | dev: true 1565 | 1566 | /@xtuc/ieee754@1.2.0: 1567 | resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} 1568 | dev: true 1569 | 1570 | /@xtuc/long@4.2.2: 1571 | resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} 1572 | dev: true 1573 | 1574 | /acorn-import-assertions@1.9.0(acorn@8.9.0): 1575 | resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} 1576 | peerDependencies: 1577 | acorn: ^8 1578 | dependencies: 1579 | acorn: 8.9.0 1580 | dev: true 1581 | 1582 | /acorn@8.9.0: 1583 | resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} 1584 | engines: {node: '>=0.4.0'} 1585 | hasBin: true 1586 | dev: true 1587 | 1588 | /ajv-formats@2.1.1(ajv@8.12.0): 1589 | resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 1590 | peerDependencies: 1591 | ajv: ^8.0.0 1592 | peerDependenciesMeta: 1593 | ajv: 1594 | optional: true 1595 | dependencies: 1596 | ajv: 8.12.0 1597 | dev: true 1598 | 1599 | /ajv-keywords@3.5.2(ajv@6.12.6): 1600 | resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} 1601 | peerDependencies: 1602 | ajv: ^6.9.1 1603 | dependencies: 1604 | ajv: 6.12.6 1605 | dev: true 1606 | 1607 | /ajv-keywords@5.1.0(ajv@8.12.0): 1608 | resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} 1609 | peerDependencies: 1610 | ajv: ^8.8.2 1611 | dependencies: 1612 | ajv: 8.12.0 1613 | fast-deep-equal: 3.1.3 1614 | dev: true 1615 | 1616 | /ajv@6.12.6: 1617 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1618 | dependencies: 1619 | fast-deep-equal: 3.1.3 1620 | fast-json-stable-stringify: 2.1.0 1621 | json-schema-traverse: 0.4.1 1622 | uri-js: 4.4.1 1623 | dev: true 1624 | 1625 | /ajv@8.12.0: 1626 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 1627 | dependencies: 1628 | fast-deep-equal: 3.1.3 1629 | json-schema-traverse: 1.0.0 1630 | require-from-string: 2.0.2 1631 | uri-js: 4.4.1 1632 | dev: true 1633 | 1634 | /ansi-regex@5.0.1: 1635 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1636 | engines: {node: '>=8'} 1637 | dev: true 1638 | 1639 | /ansi-regex@6.0.1: 1640 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 1641 | engines: {node: '>=12'} 1642 | dev: true 1643 | 1644 | /ansi-styles@3.2.1: 1645 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1646 | engines: {node: '>=4'} 1647 | dependencies: 1648 | color-convert: 1.9.3 1649 | dev: true 1650 | 1651 | /ansi-styles@4.3.0: 1652 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1653 | engines: {node: '>=8'} 1654 | dependencies: 1655 | color-convert: 2.0.1 1656 | dev: true 1657 | 1658 | /ansi-styles@6.2.1: 1659 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 1660 | engines: {node: '>=12'} 1661 | dev: true 1662 | 1663 | /anymatch@3.1.3: 1664 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 1665 | engines: {node: '>= 8'} 1666 | dependencies: 1667 | normalize-path: 3.0.0 1668 | picomatch: 2.3.1 1669 | dev: true 1670 | 1671 | /babel-loader@9.1.2(@babel/core@7.22.5)(webpack@5.88.0): 1672 | resolution: {integrity: sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==} 1673 | engines: {node: '>= 14.15.0'} 1674 | peerDependencies: 1675 | '@babel/core': ^7.12.0 1676 | webpack: '>=5' 1677 | dependencies: 1678 | '@babel/core': 7.22.5 1679 | find-cache-dir: 3.3.2 1680 | schema-utils: 4.2.0 1681 | webpack: 5.88.0(webpack-cli@5.1.4) 1682 | dev: true 1683 | 1684 | /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.5): 1685 | resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} 1686 | peerDependencies: 1687 | '@babel/core': ^7.0.0-0 1688 | dependencies: 1689 | '@babel/compat-data': 7.22.5 1690 | '@babel/core': 7.22.5 1691 | '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) 1692 | semver: 6.3.0 1693 | transitivePeerDependencies: 1694 | - supports-color 1695 | dev: true 1696 | 1697 | /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.5): 1698 | resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} 1699 | peerDependencies: 1700 | '@babel/core': ^7.0.0-0 1701 | dependencies: 1702 | '@babel/core': 7.22.5 1703 | '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) 1704 | core-js-compat: 3.31.0 1705 | transitivePeerDependencies: 1706 | - supports-color 1707 | dev: true 1708 | 1709 | /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.5): 1710 | resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} 1711 | peerDependencies: 1712 | '@babel/core': ^7.0.0-0 1713 | dependencies: 1714 | '@babel/core': 7.22.5 1715 | '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) 1716 | transitivePeerDependencies: 1717 | - supports-color 1718 | dev: true 1719 | 1720 | /balanced-match@1.0.2: 1721 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1722 | dev: true 1723 | 1724 | /binary-extensions@2.2.0: 1725 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1726 | engines: {node: '>=8'} 1727 | dev: true 1728 | 1729 | /boolbase@1.0.0: 1730 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 1731 | dev: true 1732 | 1733 | /brace-expansion@2.0.1: 1734 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1735 | dependencies: 1736 | balanced-match: 1.0.2 1737 | dev: true 1738 | 1739 | /braces@3.0.2: 1740 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1741 | engines: {node: '>=8'} 1742 | dependencies: 1743 | fill-range: 7.0.1 1744 | dev: true 1745 | 1746 | /browserslist@4.21.9: 1747 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} 1748 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1749 | hasBin: true 1750 | dependencies: 1751 | caniuse-lite: 1.0.30001507 1752 | electron-to-chromium: 1.4.440 1753 | node-releases: 2.0.12 1754 | update-browserslist-db: 1.0.11(browserslist@4.21.9) 1755 | dev: true 1756 | 1757 | /buffer-from@1.1.2: 1758 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1759 | dev: true 1760 | 1761 | /caniuse-api@3.0.0: 1762 | resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} 1763 | dependencies: 1764 | browserslist: 4.21.9 1765 | caniuse-lite: 1.0.30001507 1766 | lodash.memoize: 4.1.2 1767 | lodash.uniq: 4.5.0 1768 | dev: true 1769 | 1770 | /caniuse-lite@1.0.30001507: 1771 | resolution: {integrity: sha512-SFpUDoSLCaE5XYL2jfqe9ova/pbQHEmbheDf5r4diNwbAgR3qxM9NQtfsiSscjqoya5K7kFcHPUQ+VsUkIJR4A==} 1772 | dev: true 1773 | 1774 | /chalk@2.4.2: 1775 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1776 | engines: {node: '>=4'} 1777 | dependencies: 1778 | ansi-styles: 3.2.1 1779 | escape-string-regexp: 1.0.5 1780 | supports-color: 5.5.0 1781 | dev: true 1782 | 1783 | /chalk@4.1.2: 1784 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1785 | engines: {node: '>=10'} 1786 | dependencies: 1787 | ansi-styles: 4.3.0 1788 | supports-color: 7.2.0 1789 | dev: true 1790 | 1791 | /chokidar@3.5.3: 1792 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1793 | engines: {node: '>= 8.10.0'} 1794 | dependencies: 1795 | anymatch: 3.1.3 1796 | braces: 3.0.2 1797 | glob-parent: 5.1.2 1798 | is-binary-path: 2.1.0 1799 | is-glob: 4.0.3 1800 | normalize-path: 3.0.0 1801 | readdirp: 3.6.0 1802 | optionalDependencies: 1803 | fsevents: 2.3.2 1804 | dev: true 1805 | 1806 | /chrome-trace-event@1.0.3: 1807 | resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} 1808 | engines: {node: '>=6.0'} 1809 | dev: true 1810 | 1811 | /ci-info@3.8.0: 1812 | resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} 1813 | engines: {node: '>=8'} 1814 | dev: true 1815 | 1816 | /clone-deep@4.0.1: 1817 | resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} 1818 | engines: {node: '>=6'} 1819 | dependencies: 1820 | is-plain-object: 2.0.4 1821 | kind-of: 6.0.3 1822 | shallow-clone: 3.0.1 1823 | dev: true 1824 | 1825 | /color-convert@1.9.3: 1826 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1827 | dependencies: 1828 | color-name: 1.1.3 1829 | dev: true 1830 | 1831 | /color-convert@2.0.1: 1832 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1833 | engines: {node: '>=7.0.0'} 1834 | dependencies: 1835 | color-name: 1.1.4 1836 | dev: true 1837 | 1838 | /color-name@1.1.3: 1839 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1840 | dev: true 1841 | 1842 | /color-name@1.1.4: 1843 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1844 | dev: true 1845 | 1846 | /colord@2.9.3: 1847 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 1848 | dev: true 1849 | 1850 | /colorette@2.0.20: 1851 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 1852 | dev: true 1853 | 1854 | /commander@10.0.1: 1855 | resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} 1856 | engines: {node: '>=14'} 1857 | dev: true 1858 | 1859 | /commander@2.20.3: 1860 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1861 | dev: true 1862 | 1863 | /commander@7.2.0: 1864 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 1865 | engines: {node: '>= 10'} 1866 | dev: true 1867 | 1868 | /commondir@1.0.1: 1869 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 1870 | dev: true 1871 | 1872 | /convert-source-map@1.9.0: 1873 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1874 | dev: true 1875 | 1876 | /copy-webpack-plugin@11.0.0(webpack@5.88.0): 1877 | resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} 1878 | engines: {node: '>= 14.15.0'} 1879 | peerDependencies: 1880 | webpack: ^5.1.0 1881 | dependencies: 1882 | fast-glob: 3.2.12 1883 | glob-parent: 6.0.2 1884 | globby: 13.2.0 1885 | normalize-path: 3.0.0 1886 | schema-utils: 4.2.0 1887 | serialize-javascript: 6.0.1 1888 | webpack: 5.88.0(webpack-cli@5.1.4) 1889 | dev: true 1890 | 1891 | /core-js-compat@3.31.0: 1892 | resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==} 1893 | dependencies: 1894 | browserslist: 4.21.9 1895 | dev: true 1896 | 1897 | /cross-env@7.0.3: 1898 | resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} 1899 | engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} 1900 | hasBin: true 1901 | dependencies: 1902 | cross-spawn: 7.0.3 1903 | dev: true 1904 | 1905 | /cross-spawn@7.0.3: 1906 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1907 | engines: {node: '>= 8'} 1908 | dependencies: 1909 | path-key: 3.1.1 1910 | shebang-command: 2.0.0 1911 | which: 2.0.2 1912 | dev: true 1913 | 1914 | /css-declaration-sorter@6.4.0(postcss@8.4.24): 1915 | resolution: {integrity: sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==} 1916 | engines: {node: ^10 || ^12 || >=14} 1917 | peerDependencies: 1918 | postcss: ^8.0.9 1919 | dependencies: 1920 | postcss: 8.4.24 1921 | dev: true 1922 | 1923 | /css-loader@6.8.1(webpack@5.88.0): 1924 | resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} 1925 | engines: {node: '>= 12.13.0'} 1926 | peerDependencies: 1927 | webpack: ^5.0.0 1928 | dependencies: 1929 | icss-utils: 5.1.0(postcss@8.4.24) 1930 | postcss: 8.4.24 1931 | postcss-modules-extract-imports: 3.0.0(postcss@8.4.24) 1932 | postcss-modules-local-by-default: 4.0.3(postcss@8.4.24) 1933 | postcss-modules-scope: 3.0.0(postcss@8.4.24) 1934 | postcss-modules-values: 4.0.0(postcss@8.4.24) 1935 | postcss-value-parser: 4.2.0 1936 | semver: 7.5.3 1937 | webpack: 5.88.0(webpack-cli@5.1.4) 1938 | dev: true 1939 | 1940 | /css-minimizer-webpack-plugin@5.0.1(webpack@5.88.0): 1941 | resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} 1942 | engines: {node: '>= 14.15.0'} 1943 | peerDependencies: 1944 | '@parcel/css': '*' 1945 | '@swc/css': '*' 1946 | clean-css: '*' 1947 | csso: '*' 1948 | esbuild: '*' 1949 | lightningcss: '*' 1950 | webpack: ^5.0.0 1951 | peerDependenciesMeta: 1952 | '@parcel/css': 1953 | optional: true 1954 | '@swc/css': 1955 | optional: true 1956 | clean-css: 1957 | optional: true 1958 | csso: 1959 | optional: true 1960 | esbuild: 1961 | optional: true 1962 | lightningcss: 1963 | optional: true 1964 | dependencies: 1965 | '@jridgewell/trace-mapping': 0.3.18 1966 | cssnano: 6.0.1(postcss@8.4.24) 1967 | jest-worker: 29.5.0 1968 | postcss: 8.4.24 1969 | schema-utils: 4.2.0 1970 | serialize-javascript: 6.0.1 1971 | webpack: 5.88.0(webpack-cli@5.1.4) 1972 | dev: true 1973 | 1974 | /css-select@5.1.0: 1975 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 1976 | dependencies: 1977 | boolbase: 1.0.0 1978 | css-what: 6.1.0 1979 | domhandler: 5.0.3 1980 | domutils: 3.1.0 1981 | nth-check: 2.1.1 1982 | dev: true 1983 | 1984 | /css-tree@2.2.1: 1985 | resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} 1986 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1987 | dependencies: 1988 | mdn-data: 2.0.28 1989 | source-map-js: 1.0.2 1990 | dev: true 1991 | 1992 | /css-tree@2.3.1: 1993 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 1994 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1995 | dependencies: 1996 | mdn-data: 2.0.30 1997 | source-map-js: 1.0.2 1998 | dev: true 1999 | 2000 | /css-what@6.1.0: 2001 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 2002 | engines: {node: '>= 6'} 2003 | dev: true 2004 | 2005 | /cssesc@3.0.0: 2006 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 2007 | engines: {node: '>=4'} 2008 | hasBin: true 2009 | dev: true 2010 | 2011 | /cssnano-preset-default@6.0.1(postcss@8.4.24): 2012 | resolution: {integrity: sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==} 2013 | engines: {node: ^14 || ^16 || >=18.0} 2014 | peerDependencies: 2015 | postcss: ^8.2.15 2016 | dependencies: 2017 | css-declaration-sorter: 6.4.0(postcss@8.4.24) 2018 | cssnano-utils: 4.0.0(postcss@8.4.24) 2019 | postcss: 8.4.24 2020 | postcss-calc: 9.0.1(postcss@8.4.24) 2021 | postcss-colormin: 6.0.0(postcss@8.4.24) 2022 | postcss-convert-values: 6.0.0(postcss@8.4.24) 2023 | postcss-discard-comments: 6.0.0(postcss@8.4.24) 2024 | postcss-discard-duplicates: 6.0.0(postcss@8.4.24) 2025 | postcss-discard-empty: 6.0.0(postcss@8.4.24) 2026 | postcss-discard-overridden: 6.0.0(postcss@8.4.24) 2027 | postcss-merge-longhand: 6.0.0(postcss@8.4.24) 2028 | postcss-merge-rules: 6.0.1(postcss@8.4.24) 2029 | postcss-minify-font-values: 6.0.0(postcss@8.4.24) 2030 | postcss-minify-gradients: 6.0.0(postcss@8.4.24) 2031 | postcss-minify-params: 6.0.0(postcss@8.4.24) 2032 | postcss-minify-selectors: 6.0.0(postcss@8.4.24) 2033 | postcss-normalize-charset: 6.0.0(postcss@8.4.24) 2034 | postcss-normalize-display-values: 6.0.0(postcss@8.4.24) 2035 | postcss-normalize-positions: 6.0.0(postcss@8.4.24) 2036 | postcss-normalize-repeat-style: 6.0.0(postcss@8.4.24) 2037 | postcss-normalize-string: 6.0.0(postcss@8.4.24) 2038 | postcss-normalize-timing-functions: 6.0.0(postcss@8.4.24) 2039 | postcss-normalize-unicode: 6.0.0(postcss@8.4.24) 2040 | postcss-normalize-url: 6.0.0(postcss@8.4.24) 2041 | postcss-normalize-whitespace: 6.0.0(postcss@8.4.24) 2042 | postcss-ordered-values: 6.0.0(postcss@8.4.24) 2043 | postcss-reduce-initial: 6.0.0(postcss@8.4.24) 2044 | postcss-reduce-transforms: 6.0.0(postcss@8.4.24) 2045 | postcss-svgo: 6.0.0(postcss@8.4.24) 2046 | postcss-unique-selectors: 6.0.0(postcss@8.4.24) 2047 | dev: true 2048 | 2049 | /cssnano-utils@4.0.0(postcss@8.4.24): 2050 | resolution: {integrity: sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==} 2051 | engines: {node: ^14 || ^16 || >=18.0} 2052 | peerDependencies: 2053 | postcss: ^8.2.15 2054 | dependencies: 2055 | postcss: 8.4.24 2056 | dev: true 2057 | 2058 | /cssnano@6.0.1(postcss@8.4.24): 2059 | resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==} 2060 | engines: {node: ^14 || ^16 || >=18.0} 2061 | peerDependencies: 2062 | postcss: ^8.2.15 2063 | dependencies: 2064 | cssnano-preset-default: 6.0.1(postcss@8.4.24) 2065 | lilconfig: 2.1.0 2066 | postcss: 8.4.24 2067 | dev: true 2068 | 2069 | /csso@5.0.5: 2070 | resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} 2071 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 2072 | dependencies: 2073 | css-tree: 2.2.1 2074 | dev: true 2075 | 2076 | /debug@4.3.4: 2077 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 2078 | engines: {node: '>=6.0'} 2079 | peerDependencies: 2080 | supports-color: '*' 2081 | peerDependenciesMeta: 2082 | supports-color: 2083 | optional: true 2084 | dependencies: 2085 | ms: 2.1.2 2086 | dev: true 2087 | 2088 | /dir-glob@3.0.1: 2089 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 2090 | engines: {node: '>=8'} 2091 | dependencies: 2092 | path-type: 4.0.0 2093 | dev: true 2094 | 2095 | /dom-serializer@2.0.0: 2096 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 2097 | dependencies: 2098 | domelementtype: 2.3.0 2099 | domhandler: 5.0.3 2100 | entities: 4.5.0 2101 | dev: true 2102 | 2103 | /domelementtype@2.3.0: 2104 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 2105 | dev: true 2106 | 2107 | /domhandler@5.0.3: 2108 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 2109 | engines: {node: '>= 4'} 2110 | dependencies: 2111 | domelementtype: 2.3.0 2112 | dev: true 2113 | 2114 | /domutils@3.1.0: 2115 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 2116 | dependencies: 2117 | dom-serializer: 2.0.0 2118 | domelementtype: 2.3.0 2119 | domhandler: 5.0.3 2120 | dev: true 2121 | 2122 | /eastasianwidth@0.2.0: 2123 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 2124 | dev: true 2125 | 2126 | /electron-to-chromium@1.4.440: 2127 | resolution: {integrity: sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw==} 2128 | dev: true 2129 | 2130 | /emoji-regex@8.0.0: 2131 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 2132 | dev: true 2133 | 2134 | /emoji-regex@9.2.2: 2135 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 2136 | dev: true 2137 | 2138 | /enhanced-resolve@5.15.0: 2139 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 2140 | engines: {node: '>=10.13.0'} 2141 | dependencies: 2142 | graceful-fs: 4.2.11 2143 | tapable: 2.2.1 2144 | dev: true 2145 | 2146 | /entities@4.5.0: 2147 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 2148 | engines: {node: '>=0.12'} 2149 | dev: true 2150 | 2151 | /envinfo@7.9.0: 2152 | resolution: {integrity: sha512-RODB4txU+xImYDemN5DqaKC0CHk05XSVkOX4pq0hK26Qx+1LChkuOyUDlGEjYb3ACr0n9qBhFjg37hQuJvpkRQ==} 2153 | engines: {node: '>=4'} 2154 | hasBin: true 2155 | dev: true 2156 | 2157 | /es-module-lexer@1.3.0: 2158 | resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} 2159 | dev: true 2160 | 2161 | /escalade@3.1.1: 2162 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 2163 | engines: {node: '>=6'} 2164 | dev: true 2165 | 2166 | /escape-string-regexp@1.0.5: 2167 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 2168 | engines: {node: '>=0.8.0'} 2169 | dev: true 2170 | 2171 | /eslint-scope@5.1.1: 2172 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 2173 | engines: {node: '>=8.0.0'} 2174 | dependencies: 2175 | esrecurse: 4.3.0 2176 | estraverse: 4.3.0 2177 | dev: true 2178 | 2179 | /esrecurse@4.3.0: 2180 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 2181 | engines: {node: '>=4.0'} 2182 | dependencies: 2183 | estraverse: 5.3.0 2184 | dev: true 2185 | 2186 | /estraverse@4.3.0: 2187 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 2188 | engines: {node: '>=4.0'} 2189 | dev: true 2190 | 2191 | /estraverse@5.3.0: 2192 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 2193 | engines: {node: '>=4.0'} 2194 | dev: true 2195 | 2196 | /esutils@2.0.3: 2197 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 2198 | engines: {node: '>=0.10.0'} 2199 | dev: true 2200 | 2201 | /events@3.3.0: 2202 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 2203 | engines: {node: '>=0.8.x'} 2204 | dev: true 2205 | 2206 | /fast-deep-equal@3.1.3: 2207 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 2208 | dev: true 2209 | 2210 | /fast-glob@3.2.12: 2211 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 2212 | engines: {node: '>=8.6.0'} 2213 | dependencies: 2214 | '@nodelib/fs.stat': 2.0.5 2215 | '@nodelib/fs.walk': 1.2.8 2216 | glob-parent: 5.1.2 2217 | merge2: 1.4.1 2218 | micromatch: 4.0.5 2219 | dev: true 2220 | 2221 | /fast-json-stable-stringify@2.1.0: 2222 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 2223 | dev: true 2224 | 2225 | /fastest-levenshtein@1.0.16: 2226 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 2227 | engines: {node: '>= 4.9.1'} 2228 | dev: true 2229 | 2230 | /fastq@1.15.0: 2231 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 2232 | dependencies: 2233 | reusify: 1.0.4 2234 | dev: true 2235 | 2236 | /fill-range@7.0.1: 2237 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 2238 | engines: {node: '>=8'} 2239 | dependencies: 2240 | to-regex-range: 5.0.1 2241 | dev: true 2242 | 2243 | /find-cache-dir@3.3.2: 2244 | resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} 2245 | engines: {node: '>=8'} 2246 | dependencies: 2247 | commondir: 1.0.1 2248 | make-dir: 3.1.0 2249 | pkg-dir: 4.2.0 2250 | dev: true 2251 | 2252 | /find-up@4.1.0: 2253 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 2254 | engines: {node: '>=8'} 2255 | dependencies: 2256 | locate-path: 5.0.0 2257 | path-exists: 4.0.0 2258 | dev: true 2259 | 2260 | /foreground-child@3.1.1: 2261 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 2262 | engines: {node: '>=14'} 2263 | dependencies: 2264 | cross-spawn: 7.0.3 2265 | signal-exit: 4.0.2 2266 | dev: true 2267 | 2268 | /fsevents@2.3.2: 2269 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 2270 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2271 | os: [darwin] 2272 | requiresBuild: true 2273 | dev: true 2274 | optional: true 2275 | 2276 | /function-bind@1.1.1: 2277 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 2278 | dev: true 2279 | 2280 | /gensync@1.0.0-beta.2: 2281 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 2282 | engines: {node: '>=6.9.0'} 2283 | dev: true 2284 | 2285 | /glob-parent@5.1.2: 2286 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 2287 | engines: {node: '>= 6'} 2288 | dependencies: 2289 | is-glob: 4.0.3 2290 | dev: true 2291 | 2292 | /glob-parent@6.0.2: 2293 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 2294 | engines: {node: '>=10.13.0'} 2295 | dependencies: 2296 | is-glob: 4.0.3 2297 | dev: true 2298 | 2299 | /glob-to-regexp@0.4.1: 2300 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 2301 | dev: true 2302 | 2303 | /glob@10.3.0: 2304 | resolution: {integrity: sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==} 2305 | engines: {node: '>=16 || 14 >=14.17'} 2306 | hasBin: true 2307 | dependencies: 2308 | foreground-child: 3.1.1 2309 | jackspeak: 2.2.1 2310 | minimatch: 9.0.2 2311 | minipass: 6.0.2 2312 | path-scurry: 1.9.2 2313 | dev: true 2314 | 2315 | /globals@11.12.0: 2316 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 2317 | engines: {node: '>=4'} 2318 | dev: true 2319 | 2320 | /globby@13.2.0: 2321 | resolution: {integrity: sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==} 2322 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2323 | dependencies: 2324 | dir-glob: 3.0.1 2325 | fast-glob: 3.2.12 2326 | ignore: 5.2.4 2327 | merge2: 1.4.1 2328 | slash: 4.0.0 2329 | dev: true 2330 | 2331 | /graceful-fs@4.2.11: 2332 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 2333 | dev: true 2334 | 2335 | /has-flag@3.0.0: 2336 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 2337 | engines: {node: '>=4'} 2338 | dev: true 2339 | 2340 | /has-flag@4.0.0: 2341 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2342 | engines: {node: '>=8'} 2343 | dev: true 2344 | 2345 | /has@1.0.3: 2346 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2347 | engines: {node: '>= 0.4.0'} 2348 | dependencies: 2349 | function-bind: 1.1.1 2350 | dev: true 2351 | 2352 | /icss-utils@5.1.0(postcss@8.4.24): 2353 | resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} 2354 | engines: {node: ^10 || ^12 || >= 14} 2355 | peerDependencies: 2356 | postcss: ^8.1.0 2357 | dependencies: 2358 | postcss: 8.4.24 2359 | dev: true 2360 | 2361 | /ignore@5.2.4: 2362 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 2363 | engines: {node: '>= 4'} 2364 | dev: true 2365 | 2366 | /immutable@4.3.0: 2367 | resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} 2368 | dev: true 2369 | 2370 | /import-local@3.1.0: 2371 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 2372 | engines: {node: '>=8'} 2373 | hasBin: true 2374 | dependencies: 2375 | pkg-dir: 4.2.0 2376 | resolve-cwd: 3.0.0 2377 | dev: true 2378 | 2379 | /interpret@3.1.1: 2380 | resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} 2381 | engines: {node: '>=10.13.0'} 2382 | dev: true 2383 | 2384 | /is-binary-path@2.1.0: 2385 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2386 | engines: {node: '>=8'} 2387 | dependencies: 2388 | binary-extensions: 2.2.0 2389 | dev: true 2390 | 2391 | /is-core-module@2.12.1: 2392 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 2393 | dependencies: 2394 | has: 1.0.3 2395 | dev: true 2396 | 2397 | /is-extglob@2.1.1: 2398 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2399 | engines: {node: '>=0.10.0'} 2400 | dev: true 2401 | 2402 | /is-fullwidth-code-point@3.0.0: 2403 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2404 | engines: {node: '>=8'} 2405 | dev: true 2406 | 2407 | /is-glob@4.0.3: 2408 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2409 | engines: {node: '>=0.10.0'} 2410 | dependencies: 2411 | is-extglob: 2.1.1 2412 | dev: true 2413 | 2414 | /is-number@7.0.0: 2415 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2416 | engines: {node: '>=0.12.0'} 2417 | dev: true 2418 | 2419 | /is-plain-object@2.0.4: 2420 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 2421 | engines: {node: '>=0.10.0'} 2422 | dependencies: 2423 | isobject: 3.0.1 2424 | dev: true 2425 | 2426 | /isexe@2.0.0: 2427 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2428 | dev: true 2429 | 2430 | /isobject@3.0.1: 2431 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 2432 | engines: {node: '>=0.10.0'} 2433 | dev: true 2434 | 2435 | /jackspeak@2.2.1: 2436 | resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==} 2437 | engines: {node: '>=14'} 2438 | dependencies: 2439 | '@isaacs/cliui': 8.0.2 2440 | optionalDependencies: 2441 | '@pkgjs/parseargs': 0.11.0 2442 | dev: true 2443 | 2444 | /jest-util@29.5.0: 2445 | resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} 2446 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2447 | dependencies: 2448 | '@jest/types': 29.5.0 2449 | '@types/node': 20.3.1 2450 | chalk: 4.1.2 2451 | ci-info: 3.8.0 2452 | graceful-fs: 4.2.11 2453 | picomatch: 2.3.1 2454 | dev: true 2455 | 2456 | /jest-worker@27.5.1: 2457 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 2458 | engines: {node: '>= 10.13.0'} 2459 | dependencies: 2460 | '@types/node': 20.3.1 2461 | merge-stream: 2.0.0 2462 | supports-color: 8.1.1 2463 | dev: true 2464 | 2465 | /jest-worker@29.5.0: 2466 | resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} 2467 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2468 | dependencies: 2469 | '@types/node': 20.3.1 2470 | jest-util: 29.5.0 2471 | merge-stream: 2.0.0 2472 | supports-color: 8.1.1 2473 | dev: true 2474 | 2475 | /js-tokens@4.0.0: 2476 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2477 | dev: true 2478 | 2479 | /jsesc@0.5.0: 2480 | resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} 2481 | hasBin: true 2482 | dev: true 2483 | 2484 | /jsesc@2.5.2: 2485 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2486 | engines: {node: '>=4'} 2487 | hasBin: true 2488 | dev: true 2489 | 2490 | /json-parse-even-better-errors@2.3.1: 2491 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2492 | dev: true 2493 | 2494 | /json-schema-traverse@0.4.1: 2495 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2496 | dev: true 2497 | 2498 | /json-schema-traverse@1.0.0: 2499 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 2500 | dev: true 2501 | 2502 | /json5@2.2.3: 2503 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2504 | engines: {node: '>=6'} 2505 | hasBin: true 2506 | dev: true 2507 | 2508 | /kind-of@6.0.3: 2509 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 2510 | engines: {node: '>=0.10.0'} 2511 | dev: true 2512 | 2513 | /lilconfig@2.1.0: 2514 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2515 | engines: {node: '>=10'} 2516 | dev: true 2517 | 2518 | /loader-runner@4.3.0: 2519 | resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} 2520 | engines: {node: '>=6.11.5'} 2521 | dev: true 2522 | 2523 | /locate-path@5.0.0: 2524 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2525 | engines: {node: '>=8'} 2526 | dependencies: 2527 | p-locate: 4.1.0 2528 | dev: true 2529 | 2530 | /lodash.debounce@4.0.8: 2531 | resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} 2532 | dev: true 2533 | 2534 | /lodash.memoize@4.1.2: 2535 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 2536 | dev: true 2537 | 2538 | /lodash.uniq@4.5.0: 2539 | resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} 2540 | dev: true 2541 | 2542 | /lru-cache@5.1.1: 2543 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2544 | dependencies: 2545 | yallist: 3.1.1 2546 | dev: true 2547 | 2548 | /lru-cache@6.0.0: 2549 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2550 | engines: {node: '>=10'} 2551 | dependencies: 2552 | yallist: 4.0.0 2553 | dev: true 2554 | 2555 | /lru-cache@9.1.2: 2556 | resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==} 2557 | engines: {node: 14 || >=16.14} 2558 | dev: true 2559 | 2560 | /make-dir@3.1.0: 2561 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2562 | engines: {node: '>=8'} 2563 | dependencies: 2564 | semver: 6.3.0 2565 | dev: true 2566 | 2567 | /mdn-data@2.0.28: 2568 | resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} 2569 | dev: true 2570 | 2571 | /mdn-data@2.0.30: 2572 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 2573 | dev: true 2574 | 2575 | /merge-stream@2.0.0: 2576 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2577 | dev: true 2578 | 2579 | /merge2@1.4.1: 2580 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2581 | engines: {node: '>= 8'} 2582 | dev: true 2583 | 2584 | /micromatch@4.0.5: 2585 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2586 | engines: {node: '>=8.6'} 2587 | dependencies: 2588 | braces: 3.0.2 2589 | picomatch: 2.3.1 2590 | dev: true 2591 | 2592 | /mime-db@1.52.0: 2593 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2594 | engines: {node: '>= 0.6'} 2595 | dev: true 2596 | 2597 | /mime-types@2.1.35: 2598 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2599 | engines: {node: '>= 0.6'} 2600 | dependencies: 2601 | mime-db: 1.52.0 2602 | dev: true 2603 | 2604 | /mini-css-extract-plugin@2.7.6(webpack@5.88.0): 2605 | resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} 2606 | engines: {node: '>= 12.13.0'} 2607 | peerDependencies: 2608 | webpack: ^5.0.0 2609 | dependencies: 2610 | schema-utils: 4.2.0 2611 | webpack: 5.88.0(webpack-cli@5.1.4) 2612 | dev: true 2613 | 2614 | /minimatch@9.0.2: 2615 | resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} 2616 | engines: {node: '>=16 || 14 >=14.17'} 2617 | dependencies: 2618 | brace-expansion: 2.0.1 2619 | dev: true 2620 | 2621 | /minipass@6.0.2: 2622 | resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} 2623 | engines: {node: '>=16 || 14 >=14.17'} 2624 | dev: true 2625 | 2626 | /ms@2.1.2: 2627 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2628 | dev: true 2629 | 2630 | /nanoid@3.3.6: 2631 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 2632 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2633 | hasBin: true 2634 | dev: true 2635 | 2636 | /neo-async@2.6.2: 2637 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 2638 | dev: true 2639 | 2640 | /node-releases@2.0.12: 2641 | resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} 2642 | dev: true 2643 | 2644 | /normalize-path@3.0.0: 2645 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2646 | engines: {node: '>=0.10.0'} 2647 | dev: true 2648 | 2649 | /nth-check@2.1.1: 2650 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2651 | dependencies: 2652 | boolbase: 1.0.0 2653 | dev: true 2654 | 2655 | /p-limit@2.3.0: 2656 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2657 | engines: {node: '>=6'} 2658 | dependencies: 2659 | p-try: 2.2.0 2660 | dev: true 2661 | 2662 | /p-locate@4.1.0: 2663 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2664 | engines: {node: '>=8'} 2665 | dependencies: 2666 | p-limit: 2.3.0 2667 | dev: true 2668 | 2669 | /p-try@2.2.0: 2670 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2671 | engines: {node: '>=6'} 2672 | dev: true 2673 | 2674 | /path-exists@4.0.0: 2675 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2676 | engines: {node: '>=8'} 2677 | dev: true 2678 | 2679 | /path-key@3.1.1: 2680 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2681 | engines: {node: '>=8'} 2682 | dev: true 2683 | 2684 | /path-parse@1.0.7: 2685 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2686 | dev: true 2687 | 2688 | /path-scurry@1.9.2: 2689 | resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==} 2690 | engines: {node: '>=16 || 14 >=14.17'} 2691 | dependencies: 2692 | lru-cache: 9.1.2 2693 | minipass: 6.0.2 2694 | dev: true 2695 | 2696 | /path-type@4.0.0: 2697 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2698 | engines: {node: '>=8'} 2699 | dev: true 2700 | 2701 | /picocolors@1.0.0: 2702 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2703 | dev: true 2704 | 2705 | /picomatch@2.3.1: 2706 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2707 | engines: {node: '>=8.6'} 2708 | dev: true 2709 | 2710 | /pkg-dir@4.2.0: 2711 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2712 | engines: {node: '>=8'} 2713 | dependencies: 2714 | find-up: 4.1.0 2715 | dev: true 2716 | 2717 | /postcss-calc@9.0.1(postcss@8.4.24): 2718 | resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} 2719 | engines: {node: ^14 || ^16 || >=18.0} 2720 | peerDependencies: 2721 | postcss: ^8.2.2 2722 | dependencies: 2723 | postcss: 8.4.24 2724 | postcss-selector-parser: 6.0.13 2725 | postcss-value-parser: 4.2.0 2726 | dev: true 2727 | 2728 | /postcss-colormin@6.0.0(postcss@8.4.24): 2729 | resolution: {integrity: sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==} 2730 | engines: {node: ^14 || ^16 || >=18.0} 2731 | peerDependencies: 2732 | postcss: ^8.2.15 2733 | dependencies: 2734 | browserslist: 4.21.9 2735 | caniuse-api: 3.0.0 2736 | colord: 2.9.3 2737 | postcss: 8.4.24 2738 | postcss-value-parser: 4.2.0 2739 | dev: true 2740 | 2741 | /postcss-convert-values@6.0.0(postcss@8.4.24): 2742 | resolution: {integrity: sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==} 2743 | engines: {node: ^14 || ^16 || >=18.0} 2744 | peerDependencies: 2745 | postcss: ^8.2.15 2746 | dependencies: 2747 | browserslist: 4.21.9 2748 | postcss: 8.4.24 2749 | postcss-value-parser: 4.2.0 2750 | dev: true 2751 | 2752 | /postcss-discard-comments@6.0.0(postcss@8.4.24): 2753 | resolution: {integrity: sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==} 2754 | engines: {node: ^14 || ^16 || >=18.0} 2755 | peerDependencies: 2756 | postcss: ^8.2.15 2757 | dependencies: 2758 | postcss: 8.4.24 2759 | dev: true 2760 | 2761 | /postcss-discard-duplicates@6.0.0(postcss@8.4.24): 2762 | resolution: {integrity: sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==} 2763 | engines: {node: ^14 || ^16 || >=18.0} 2764 | peerDependencies: 2765 | postcss: ^8.2.15 2766 | dependencies: 2767 | postcss: 8.4.24 2768 | dev: true 2769 | 2770 | /postcss-discard-empty@6.0.0(postcss@8.4.24): 2771 | resolution: {integrity: sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==} 2772 | engines: {node: ^14 || ^16 || >=18.0} 2773 | peerDependencies: 2774 | postcss: ^8.2.15 2775 | dependencies: 2776 | postcss: 8.4.24 2777 | dev: true 2778 | 2779 | /postcss-discard-overridden@6.0.0(postcss@8.4.24): 2780 | resolution: {integrity: sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==} 2781 | engines: {node: ^14 || ^16 || >=18.0} 2782 | peerDependencies: 2783 | postcss: ^8.2.15 2784 | dependencies: 2785 | postcss: 8.4.24 2786 | dev: true 2787 | 2788 | /postcss-merge-longhand@6.0.0(postcss@8.4.24): 2789 | resolution: {integrity: sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==} 2790 | engines: {node: ^14 || ^16 || >=18.0} 2791 | peerDependencies: 2792 | postcss: ^8.2.15 2793 | dependencies: 2794 | postcss: 8.4.24 2795 | postcss-value-parser: 4.2.0 2796 | stylehacks: 6.0.0(postcss@8.4.24) 2797 | dev: true 2798 | 2799 | /postcss-merge-rules@6.0.1(postcss@8.4.24): 2800 | resolution: {integrity: sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==} 2801 | engines: {node: ^14 || ^16 || >=18.0} 2802 | peerDependencies: 2803 | postcss: ^8.2.15 2804 | dependencies: 2805 | browserslist: 4.21.9 2806 | caniuse-api: 3.0.0 2807 | cssnano-utils: 4.0.0(postcss@8.4.24) 2808 | postcss: 8.4.24 2809 | postcss-selector-parser: 6.0.13 2810 | dev: true 2811 | 2812 | /postcss-minify-font-values@6.0.0(postcss@8.4.24): 2813 | resolution: {integrity: sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==} 2814 | engines: {node: ^14 || ^16 || >=18.0} 2815 | peerDependencies: 2816 | postcss: ^8.2.15 2817 | dependencies: 2818 | postcss: 8.4.24 2819 | postcss-value-parser: 4.2.0 2820 | dev: true 2821 | 2822 | /postcss-minify-gradients@6.0.0(postcss@8.4.24): 2823 | resolution: {integrity: sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==} 2824 | engines: {node: ^14 || ^16 || >=18.0} 2825 | peerDependencies: 2826 | postcss: ^8.2.15 2827 | dependencies: 2828 | colord: 2.9.3 2829 | cssnano-utils: 4.0.0(postcss@8.4.24) 2830 | postcss: 8.4.24 2831 | postcss-value-parser: 4.2.0 2832 | dev: true 2833 | 2834 | /postcss-minify-params@6.0.0(postcss@8.4.24): 2835 | resolution: {integrity: sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==} 2836 | engines: {node: ^14 || ^16 || >=18.0} 2837 | peerDependencies: 2838 | postcss: ^8.2.15 2839 | dependencies: 2840 | browserslist: 4.21.9 2841 | cssnano-utils: 4.0.0(postcss@8.4.24) 2842 | postcss: 8.4.24 2843 | postcss-value-parser: 4.2.0 2844 | dev: true 2845 | 2846 | /postcss-minify-selectors@6.0.0(postcss@8.4.24): 2847 | resolution: {integrity: sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==} 2848 | engines: {node: ^14 || ^16 || >=18.0} 2849 | peerDependencies: 2850 | postcss: ^8.2.15 2851 | dependencies: 2852 | postcss: 8.4.24 2853 | postcss-selector-parser: 6.0.13 2854 | dev: true 2855 | 2856 | /postcss-modules-extract-imports@3.0.0(postcss@8.4.24): 2857 | resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} 2858 | engines: {node: ^10 || ^12 || >= 14} 2859 | peerDependencies: 2860 | postcss: ^8.1.0 2861 | dependencies: 2862 | postcss: 8.4.24 2863 | dev: true 2864 | 2865 | /postcss-modules-local-by-default@4.0.3(postcss@8.4.24): 2866 | resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} 2867 | engines: {node: ^10 || ^12 || >= 14} 2868 | peerDependencies: 2869 | postcss: ^8.1.0 2870 | dependencies: 2871 | icss-utils: 5.1.0(postcss@8.4.24) 2872 | postcss: 8.4.24 2873 | postcss-selector-parser: 6.0.13 2874 | postcss-value-parser: 4.2.0 2875 | dev: true 2876 | 2877 | /postcss-modules-scope@3.0.0(postcss@8.4.24): 2878 | resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} 2879 | engines: {node: ^10 || ^12 || >= 14} 2880 | peerDependencies: 2881 | postcss: ^8.1.0 2882 | dependencies: 2883 | postcss: 8.4.24 2884 | postcss-selector-parser: 6.0.13 2885 | dev: true 2886 | 2887 | /postcss-modules-values@4.0.0(postcss@8.4.24): 2888 | resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} 2889 | engines: {node: ^10 || ^12 || >= 14} 2890 | peerDependencies: 2891 | postcss: ^8.1.0 2892 | dependencies: 2893 | icss-utils: 5.1.0(postcss@8.4.24) 2894 | postcss: 8.4.24 2895 | dev: true 2896 | 2897 | /postcss-normalize-charset@6.0.0(postcss@8.4.24): 2898 | resolution: {integrity: sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==} 2899 | engines: {node: ^14 || ^16 || >=18.0} 2900 | peerDependencies: 2901 | postcss: ^8.2.15 2902 | dependencies: 2903 | postcss: 8.4.24 2904 | dev: true 2905 | 2906 | /postcss-normalize-display-values@6.0.0(postcss@8.4.24): 2907 | resolution: {integrity: sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==} 2908 | engines: {node: ^14 || ^16 || >=18.0} 2909 | peerDependencies: 2910 | postcss: ^8.2.15 2911 | dependencies: 2912 | postcss: 8.4.24 2913 | postcss-value-parser: 4.2.0 2914 | dev: true 2915 | 2916 | /postcss-normalize-positions@6.0.0(postcss@8.4.24): 2917 | resolution: {integrity: sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==} 2918 | engines: {node: ^14 || ^16 || >=18.0} 2919 | peerDependencies: 2920 | postcss: ^8.2.15 2921 | dependencies: 2922 | postcss: 8.4.24 2923 | postcss-value-parser: 4.2.0 2924 | dev: true 2925 | 2926 | /postcss-normalize-repeat-style@6.0.0(postcss@8.4.24): 2927 | resolution: {integrity: sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==} 2928 | engines: {node: ^14 || ^16 || >=18.0} 2929 | peerDependencies: 2930 | postcss: ^8.2.15 2931 | dependencies: 2932 | postcss: 8.4.24 2933 | postcss-value-parser: 4.2.0 2934 | dev: true 2935 | 2936 | /postcss-normalize-string@6.0.0(postcss@8.4.24): 2937 | resolution: {integrity: sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==} 2938 | engines: {node: ^14 || ^16 || >=18.0} 2939 | peerDependencies: 2940 | postcss: ^8.2.15 2941 | dependencies: 2942 | postcss: 8.4.24 2943 | postcss-value-parser: 4.2.0 2944 | dev: true 2945 | 2946 | /postcss-normalize-timing-functions@6.0.0(postcss@8.4.24): 2947 | resolution: {integrity: sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==} 2948 | engines: {node: ^14 || ^16 || >=18.0} 2949 | peerDependencies: 2950 | postcss: ^8.2.15 2951 | dependencies: 2952 | postcss: 8.4.24 2953 | postcss-value-parser: 4.2.0 2954 | dev: true 2955 | 2956 | /postcss-normalize-unicode@6.0.0(postcss@8.4.24): 2957 | resolution: {integrity: sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==} 2958 | engines: {node: ^14 || ^16 || >=18.0} 2959 | peerDependencies: 2960 | postcss: ^8.2.15 2961 | dependencies: 2962 | browserslist: 4.21.9 2963 | postcss: 8.4.24 2964 | postcss-value-parser: 4.2.0 2965 | dev: true 2966 | 2967 | /postcss-normalize-url@6.0.0(postcss@8.4.24): 2968 | resolution: {integrity: sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==} 2969 | engines: {node: ^14 || ^16 || >=18.0} 2970 | peerDependencies: 2971 | postcss: ^8.2.15 2972 | dependencies: 2973 | postcss: 8.4.24 2974 | postcss-value-parser: 4.2.0 2975 | dev: true 2976 | 2977 | /postcss-normalize-whitespace@6.0.0(postcss@8.4.24): 2978 | resolution: {integrity: sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==} 2979 | engines: {node: ^14 || ^16 || >=18.0} 2980 | peerDependencies: 2981 | postcss: ^8.2.15 2982 | dependencies: 2983 | postcss: 8.4.24 2984 | postcss-value-parser: 4.2.0 2985 | dev: true 2986 | 2987 | /postcss-ordered-values@6.0.0(postcss@8.4.24): 2988 | resolution: {integrity: sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==} 2989 | engines: {node: ^14 || ^16 || >=18.0} 2990 | peerDependencies: 2991 | postcss: ^8.2.15 2992 | dependencies: 2993 | cssnano-utils: 4.0.0(postcss@8.4.24) 2994 | postcss: 8.4.24 2995 | postcss-value-parser: 4.2.0 2996 | dev: true 2997 | 2998 | /postcss-reduce-initial@6.0.0(postcss@8.4.24): 2999 | resolution: {integrity: sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==} 3000 | engines: {node: ^14 || ^16 || >=18.0} 3001 | peerDependencies: 3002 | postcss: ^8.2.15 3003 | dependencies: 3004 | browserslist: 4.21.9 3005 | caniuse-api: 3.0.0 3006 | postcss: 8.4.24 3007 | dev: true 3008 | 3009 | /postcss-reduce-transforms@6.0.0(postcss@8.4.24): 3010 | resolution: {integrity: sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==} 3011 | engines: {node: ^14 || ^16 || >=18.0} 3012 | peerDependencies: 3013 | postcss: ^8.2.15 3014 | dependencies: 3015 | postcss: 8.4.24 3016 | postcss-value-parser: 4.2.0 3017 | dev: true 3018 | 3019 | /postcss-selector-parser@6.0.13: 3020 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 3021 | engines: {node: '>=4'} 3022 | dependencies: 3023 | cssesc: 3.0.0 3024 | util-deprecate: 1.0.2 3025 | dev: true 3026 | 3027 | /postcss-svgo@6.0.0(postcss@8.4.24): 3028 | resolution: {integrity: sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==} 3029 | engines: {node: ^14 || ^16 || >= 18} 3030 | peerDependencies: 3031 | postcss: ^8.2.15 3032 | dependencies: 3033 | postcss: 8.4.24 3034 | postcss-value-parser: 4.2.0 3035 | svgo: 3.0.2 3036 | dev: true 3037 | 3038 | /postcss-unique-selectors@6.0.0(postcss@8.4.24): 3039 | resolution: {integrity: sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==} 3040 | engines: {node: ^14 || ^16 || >=18.0} 3041 | peerDependencies: 3042 | postcss: ^8.2.15 3043 | dependencies: 3044 | postcss: 8.4.24 3045 | postcss-selector-parser: 6.0.13 3046 | dev: true 3047 | 3048 | /postcss-value-parser@4.2.0: 3049 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 3050 | dev: true 3051 | 3052 | /postcss@8.4.24: 3053 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} 3054 | engines: {node: ^10 || ^12 || >=14} 3055 | dependencies: 3056 | nanoid: 3.3.6 3057 | picocolors: 1.0.0 3058 | source-map-js: 1.0.2 3059 | dev: true 3060 | 3061 | /punycode@2.3.0: 3062 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 3063 | engines: {node: '>=6'} 3064 | dev: true 3065 | 3066 | /queue-microtask@1.2.3: 3067 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3068 | dev: true 3069 | 3070 | /randombytes@2.1.0: 3071 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 3072 | dependencies: 3073 | safe-buffer: 5.2.1 3074 | dev: true 3075 | 3076 | /readdirp@3.6.0: 3077 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3078 | engines: {node: '>=8.10.0'} 3079 | dependencies: 3080 | picomatch: 2.3.1 3081 | dev: true 3082 | 3083 | /rechoir@0.8.0: 3084 | resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} 3085 | engines: {node: '>= 10.13.0'} 3086 | dependencies: 3087 | resolve: 1.22.2 3088 | dev: true 3089 | 3090 | /regenerate-unicode-properties@10.1.0: 3091 | resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} 3092 | engines: {node: '>=4'} 3093 | dependencies: 3094 | regenerate: 1.4.2 3095 | dev: true 3096 | 3097 | /regenerate@1.4.2: 3098 | resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} 3099 | dev: true 3100 | 3101 | /regenerator-runtime@0.13.11: 3102 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 3103 | dev: true 3104 | 3105 | /regenerator-transform@0.15.1: 3106 | resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} 3107 | dependencies: 3108 | '@babel/runtime': 7.22.5 3109 | dev: true 3110 | 3111 | /regexpu-core@5.3.2: 3112 | resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} 3113 | engines: {node: '>=4'} 3114 | dependencies: 3115 | '@babel/regjsgen': 0.8.0 3116 | regenerate: 1.4.2 3117 | regenerate-unicode-properties: 10.1.0 3118 | regjsparser: 0.9.1 3119 | unicode-match-property-ecmascript: 2.0.0 3120 | unicode-match-property-value-ecmascript: 2.1.0 3121 | dev: true 3122 | 3123 | /regjsparser@0.9.1: 3124 | resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} 3125 | hasBin: true 3126 | dependencies: 3127 | jsesc: 0.5.0 3128 | dev: true 3129 | 3130 | /require-from-string@2.0.2: 3131 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 3132 | engines: {node: '>=0.10.0'} 3133 | dev: true 3134 | 3135 | /resolve-cwd@3.0.0: 3136 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 3137 | engines: {node: '>=8'} 3138 | dependencies: 3139 | resolve-from: 5.0.0 3140 | dev: true 3141 | 3142 | /resolve-from@5.0.0: 3143 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 3144 | engines: {node: '>=8'} 3145 | dev: true 3146 | 3147 | /resolve@1.22.2: 3148 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 3149 | hasBin: true 3150 | dependencies: 3151 | is-core-module: 2.12.1 3152 | path-parse: 1.0.7 3153 | supports-preserve-symlinks-flag: 1.0.0 3154 | dev: true 3155 | 3156 | /reusify@1.0.4: 3157 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3158 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3159 | dev: true 3160 | 3161 | /run-parallel@1.2.0: 3162 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3163 | dependencies: 3164 | queue-microtask: 1.2.3 3165 | dev: true 3166 | 3167 | /safe-buffer@5.2.1: 3168 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 3169 | dev: true 3170 | 3171 | /sass-loader@13.3.2(sass@1.63.6)(webpack@5.88.0): 3172 | resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==} 3173 | engines: {node: '>= 14.15.0'} 3174 | peerDependencies: 3175 | fibers: '>= 3.1.0' 3176 | node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 3177 | sass: ^1.3.0 3178 | sass-embedded: '*' 3179 | webpack: ^5.0.0 3180 | peerDependenciesMeta: 3181 | fibers: 3182 | optional: true 3183 | node-sass: 3184 | optional: true 3185 | sass: 3186 | optional: true 3187 | sass-embedded: 3188 | optional: true 3189 | dependencies: 3190 | neo-async: 2.6.2 3191 | sass: 1.63.6 3192 | webpack: 5.88.0(webpack-cli@5.1.4) 3193 | dev: true 3194 | 3195 | /sass@1.63.6: 3196 | resolution: {integrity: sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==} 3197 | engines: {node: '>=14.0.0'} 3198 | hasBin: true 3199 | dependencies: 3200 | chokidar: 3.5.3 3201 | immutable: 4.3.0 3202 | source-map-js: 1.0.2 3203 | dev: true 3204 | 3205 | /schema-utils@3.3.0: 3206 | resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} 3207 | engines: {node: '>= 10.13.0'} 3208 | dependencies: 3209 | '@types/json-schema': 7.0.12 3210 | ajv: 6.12.6 3211 | ajv-keywords: 3.5.2(ajv@6.12.6) 3212 | dev: true 3213 | 3214 | /schema-utils@4.2.0: 3215 | resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} 3216 | engines: {node: '>= 12.13.0'} 3217 | dependencies: 3218 | '@types/json-schema': 7.0.12 3219 | ajv: 8.12.0 3220 | ajv-formats: 2.1.1(ajv@8.12.0) 3221 | ajv-keywords: 5.1.0(ajv@8.12.0) 3222 | dev: true 3223 | 3224 | /semver@6.3.0: 3225 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 3226 | hasBin: true 3227 | dev: true 3228 | 3229 | /semver@7.5.3: 3230 | resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} 3231 | engines: {node: '>=10'} 3232 | hasBin: true 3233 | dependencies: 3234 | lru-cache: 6.0.0 3235 | dev: true 3236 | 3237 | /serialize-javascript@6.0.1: 3238 | resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} 3239 | dependencies: 3240 | randombytes: 2.1.0 3241 | dev: true 3242 | 3243 | /shallow-clone@3.0.1: 3244 | resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} 3245 | engines: {node: '>=8'} 3246 | dependencies: 3247 | kind-of: 6.0.3 3248 | dev: true 3249 | 3250 | /shebang-command@2.0.0: 3251 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3252 | engines: {node: '>=8'} 3253 | dependencies: 3254 | shebang-regex: 3.0.0 3255 | dev: true 3256 | 3257 | /shebang-regex@3.0.0: 3258 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3259 | engines: {node: '>=8'} 3260 | dev: true 3261 | 3262 | /signal-exit@4.0.2: 3263 | resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} 3264 | engines: {node: '>=14'} 3265 | dev: true 3266 | 3267 | /slash@4.0.0: 3268 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 3269 | engines: {node: '>=12'} 3270 | dev: true 3271 | 3272 | /source-map-js@1.0.2: 3273 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3274 | engines: {node: '>=0.10.0'} 3275 | dev: true 3276 | 3277 | /source-map-support@0.5.21: 3278 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3279 | dependencies: 3280 | buffer-from: 1.1.2 3281 | source-map: 0.6.1 3282 | dev: true 3283 | 3284 | /source-map@0.6.1: 3285 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3286 | engines: {node: '>=0.10.0'} 3287 | dev: true 3288 | 3289 | /string-width@4.2.3: 3290 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3291 | engines: {node: '>=8'} 3292 | dependencies: 3293 | emoji-regex: 8.0.0 3294 | is-fullwidth-code-point: 3.0.0 3295 | strip-ansi: 6.0.1 3296 | dev: true 3297 | 3298 | /string-width@5.1.2: 3299 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3300 | engines: {node: '>=12'} 3301 | dependencies: 3302 | eastasianwidth: 0.2.0 3303 | emoji-regex: 9.2.2 3304 | strip-ansi: 7.1.0 3305 | dev: true 3306 | 3307 | /strip-ansi@6.0.1: 3308 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3309 | engines: {node: '>=8'} 3310 | dependencies: 3311 | ansi-regex: 5.0.1 3312 | dev: true 3313 | 3314 | /strip-ansi@7.1.0: 3315 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 3316 | engines: {node: '>=12'} 3317 | dependencies: 3318 | ansi-regex: 6.0.1 3319 | dev: true 3320 | 3321 | /stylehacks@6.0.0(postcss@8.4.24): 3322 | resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==} 3323 | engines: {node: ^14 || ^16 || >=18.0} 3324 | peerDependencies: 3325 | postcss: ^8.2.15 3326 | dependencies: 3327 | browserslist: 4.21.9 3328 | postcss: 8.4.24 3329 | postcss-selector-parser: 6.0.13 3330 | dev: true 3331 | 3332 | /supports-color@5.5.0: 3333 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3334 | engines: {node: '>=4'} 3335 | dependencies: 3336 | has-flag: 3.0.0 3337 | dev: true 3338 | 3339 | /supports-color@7.2.0: 3340 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3341 | engines: {node: '>=8'} 3342 | dependencies: 3343 | has-flag: 4.0.0 3344 | dev: true 3345 | 3346 | /supports-color@8.1.1: 3347 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 3348 | engines: {node: '>=10'} 3349 | dependencies: 3350 | has-flag: 4.0.0 3351 | dev: true 3352 | 3353 | /supports-preserve-symlinks-flag@1.0.0: 3354 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3355 | engines: {node: '>= 0.4'} 3356 | dev: true 3357 | 3358 | /svgo@3.0.2: 3359 | resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} 3360 | engines: {node: '>=14.0.0'} 3361 | hasBin: true 3362 | dependencies: 3363 | '@trysound/sax': 0.2.0 3364 | commander: 7.2.0 3365 | css-select: 5.1.0 3366 | css-tree: 2.3.1 3367 | csso: 5.0.5 3368 | picocolors: 1.0.0 3369 | dev: true 3370 | 3371 | /tapable@2.2.1: 3372 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 3373 | engines: {node: '>=6'} 3374 | dev: true 3375 | 3376 | /terser-webpack-plugin@5.3.9(webpack@5.88.0): 3377 | resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} 3378 | engines: {node: '>= 10.13.0'} 3379 | peerDependencies: 3380 | '@swc/core': '*' 3381 | esbuild: '*' 3382 | uglify-js: '*' 3383 | webpack: ^5.1.0 3384 | peerDependenciesMeta: 3385 | '@swc/core': 3386 | optional: true 3387 | esbuild: 3388 | optional: true 3389 | uglify-js: 3390 | optional: true 3391 | dependencies: 3392 | '@jridgewell/trace-mapping': 0.3.18 3393 | jest-worker: 27.5.1 3394 | schema-utils: 3.3.0 3395 | serialize-javascript: 6.0.1 3396 | terser: 5.18.1 3397 | webpack: 5.88.0(webpack-cli@5.1.4) 3398 | dev: true 3399 | 3400 | /terser@5.18.1: 3401 | resolution: {integrity: sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ==} 3402 | engines: {node: '>=10'} 3403 | hasBin: true 3404 | dependencies: 3405 | '@jridgewell/source-map': 0.3.3 3406 | acorn: 8.9.0 3407 | commander: 2.20.3 3408 | source-map-support: 0.5.21 3409 | dev: true 3410 | 3411 | /to-fast-properties@2.0.0: 3412 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3413 | engines: {node: '>=4'} 3414 | dev: true 3415 | 3416 | /to-regex-range@5.0.1: 3417 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3418 | engines: {node: '>=8.0'} 3419 | dependencies: 3420 | is-number: 7.0.0 3421 | dev: true 3422 | 3423 | /unicode-canonical-property-names-ecmascript@2.0.0: 3424 | resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} 3425 | engines: {node: '>=4'} 3426 | dev: true 3427 | 3428 | /unicode-match-property-ecmascript@2.0.0: 3429 | resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} 3430 | engines: {node: '>=4'} 3431 | dependencies: 3432 | unicode-canonical-property-names-ecmascript: 2.0.0 3433 | unicode-property-aliases-ecmascript: 2.1.0 3434 | dev: true 3435 | 3436 | /unicode-match-property-value-ecmascript@2.1.0: 3437 | resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} 3438 | engines: {node: '>=4'} 3439 | dev: true 3440 | 3441 | /unicode-property-aliases-ecmascript@2.1.0: 3442 | resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} 3443 | engines: {node: '>=4'} 3444 | dev: true 3445 | 3446 | /update-browserslist-db@1.0.11(browserslist@4.21.9): 3447 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 3448 | hasBin: true 3449 | peerDependencies: 3450 | browserslist: '>= 4.21.0' 3451 | dependencies: 3452 | browserslist: 4.21.9 3453 | escalade: 3.1.1 3454 | picocolors: 1.0.0 3455 | dev: true 3456 | 3457 | /uri-js@4.4.1: 3458 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3459 | dependencies: 3460 | punycode: 2.3.0 3461 | dev: true 3462 | 3463 | /util-deprecate@1.0.2: 3464 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3465 | dev: true 3466 | 3467 | /watchpack@2.4.0: 3468 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 3469 | engines: {node: '>=10.13.0'} 3470 | dependencies: 3471 | glob-to-regexp: 0.4.1 3472 | graceful-fs: 4.2.11 3473 | dev: true 3474 | 3475 | /webpack-cli@5.1.4(webpack@5.88.0): 3476 | resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} 3477 | engines: {node: '>=14.15.0'} 3478 | hasBin: true 3479 | peerDependencies: 3480 | '@webpack-cli/generators': '*' 3481 | webpack: 5.x.x 3482 | webpack-bundle-analyzer: '*' 3483 | webpack-dev-server: '*' 3484 | peerDependenciesMeta: 3485 | '@webpack-cli/generators': 3486 | optional: true 3487 | webpack-bundle-analyzer: 3488 | optional: true 3489 | webpack-dev-server: 3490 | optional: true 3491 | dependencies: 3492 | '@discoveryjs/json-ext': 0.5.7 3493 | '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.0) 3494 | '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.0) 3495 | '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.0) 3496 | colorette: 2.0.20 3497 | commander: 10.0.1 3498 | cross-spawn: 7.0.3 3499 | envinfo: 7.9.0 3500 | fastest-levenshtein: 1.0.16 3501 | import-local: 3.1.0 3502 | interpret: 3.1.1 3503 | rechoir: 0.8.0 3504 | webpack: 5.88.0(webpack-cli@5.1.4) 3505 | webpack-merge: 5.9.0 3506 | dev: true 3507 | 3508 | /webpack-merge@5.9.0: 3509 | resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} 3510 | engines: {node: '>=10.0.0'} 3511 | dependencies: 3512 | clone-deep: 4.0.1 3513 | wildcard: 2.0.1 3514 | dev: true 3515 | 3516 | /webpack-sources@3.2.3: 3517 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 3518 | engines: {node: '>=10.13.0'} 3519 | dev: true 3520 | 3521 | /webpack@5.88.0(webpack-cli@5.1.4): 3522 | resolution: {integrity: sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==} 3523 | engines: {node: '>=10.13.0'} 3524 | hasBin: true 3525 | peerDependencies: 3526 | webpack-cli: '*' 3527 | peerDependenciesMeta: 3528 | webpack-cli: 3529 | optional: true 3530 | dependencies: 3531 | '@types/eslint-scope': 3.7.4 3532 | '@types/estree': 1.0.1 3533 | '@webassemblyjs/ast': 1.11.6 3534 | '@webassemblyjs/wasm-edit': 1.11.6 3535 | '@webassemblyjs/wasm-parser': 1.11.6 3536 | acorn: 8.9.0 3537 | acorn-import-assertions: 1.9.0(acorn@8.9.0) 3538 | browserslist: 4.21.9 3539 | chrome-trace-event: 1.0.3 3540 | enhanced-resolve: 5.15.0 3541 | es-module-lexer: 1.3.0 3542 | eslint-scope: 5.1.1 3543 | events: 3.3.0 3544 | glob-to-regexp: 0.4.1 3545 | graceful-fs: 4.2.11 3546 | json-parse-even-better-errors: 2.3.1 3547 | loader-runner: 4.3.0 3548 | mime-types: 2.1.35 3549 | neo-async: 2.6.2 3550 | schema-utils: 3.3.0 3551 | tapable: 2.2.1 3552 | terser-webpack-plugin: 5.3.9(webpack@5.88.0) 3553 | watchpack: 2.4.0 3554 | webpack-cli: 5.1.4(webpack@5.88.0) 3555 | webpack-sources: 3.2.3 3556 | transitivePeerDependencies: 3557 | - '@swc/core' 3558 | - esbuild 3559 | - uglify-js 3560 | dev: true 3561 | 3562 | /which@2.0.2: 3563 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3564 | engines: {node: '>= 8'} 3565 | hasBin: true 3566 | dependencies: 3567 | isexe: 2.0.0 3568 | dev: true 3569 | 3570 | /wildcard@2.0.1: 3571 | resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} 3572 | dev: true 3573 | 3574 | /wrap-ansi@7.0.0: 3575 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3576 | engines: {node: '>=10'} 3577 | dependencies: 3578 | ansi-styles: 4.3.0 3579 | string-width: 4.2.3 3580 | strip-ansi: 6.0.1 3581 | dev: true 3582 | 3583 | /wrap-ansi@8.1.0: 3584 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3585 | engines: {node: '>=12'} 3586 | dependencies: 3587 | ansi-styles: 6.2.1 3588 | string-width: 5.1.2 3589 | strip-ansi: 7.1.0 3590 | dev: true 3591 | 3592 | /yallist@3.1.1: 3593 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3594 | dev: true 3595 | 3596 | /yallist@4.0.0: 3597 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3598 | dev: true 3599 | --------------------------------------------------------------------------------