From ff5887a99e3a85fe972aa2a6cd3ef1bc7c364261 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Wed, 15 Mar 2023 13:51:36 -0400 Subject: [PATCH 01/30] Update e2e tests for namespaces (#16627) * Refactored "NewGatewayService" to handle namespaces, fixed TestHTTPRouteFlattening test * Fixed existing http_route tests for namespacing * Squash aclEnterpriseMeta for ResourceRefs and HTTPServices, accept namespace for creating connect services and regular services * Use require instead of assert after creating namespaces in http_route_tests * Refactor NewConnectService and NewGatewayService functions to use cfg objects to reduce number of method args * Rename field on SidecarConfig in tests from `SidecarServiceName` to `Name` to avoid stutter --- agent/structs/config_entry_routes.go | 3 +- .../consul-container/libs/service/connect.go | 19 ++- .../consul-container/libs/service/gateway.go | 18 ++- .../consul-container/libs/service/helpers.go | 34 +++-- .../libs/topology/peering_topology.go | 8 +- .../test/gateways/gateway_endpoint_test.go | 19 ++- .../test/gateways/http_route_test.go | 130 ++++++++++++------ .../test/upgrade/healthcheck_test.go | 3 +- .../test/upgrade/ingress_gateway_test.go | 12 +- .../test/upgrade/peering_http_test.go | 7 +- .../test/wanfed/wanfed_peering_test.go | 9 +- 11 files changed, 179 insertions(+), 83 deletions(-) diff --git a/agent/structs/config_entry_routes.go b/agent/structs/config_entry_routes.go index f99c6abd1997..683ec9f3fac0 100644 --- a/agent/structs/config_entry_routes.go +++ b/agent/structs/config_entry_routes.go @@ -4,8 +4,9 @@ import ( "fmt" "strings" - "github.com/hashicorp/consul/acl" "github.com/miekg/dns" + + "github.com/hashicorp/consul/acl" ) // BoundRoute indicates a route that has parent gateways which diff --git a/test/integration/consul-container/libs/service/connect.go b/test/integration/consul-container/libs/service/connect.go index b7f617c0df0c..a7385f2e3a0e 100644 --- a/test/integration/consul-container/libs/service/connect.go +++ b/test/integration/consul-container/libs/service/connect.go @@ -142,18 +142,24 @@ func (g ConnectContainer) GetStatus() (string, error) { return state.Status, err } +type SidecarConfig struct { + Name string + ServiceID string + Namespace string +} + // NewConnectService returns a container that runs envoy sidecar, launched by // "consul connect envoy", for service name (serviceName) on the specified // node. The container exposes port serviceBindPort and envoy admin port // (19000) by mapping them onto host ports. The container's name has a prefix // combining datacenter and name. -func NewConnectService(ctx context.Context, sidecarServiceName string, serviceID string, serviceBindPorts []int, node cluster.Agent) (*ConnectContainer, error) { +func NewConnectService(ctx context.Context, sidecarCfg SidecarConfig, serviceBindPorts []int, node cluster.Agent) (*ConnectContainer, error) { nodeConfig := node.GetConfig() if nodeConfig.ScratchDir == "" { return nil, fmt.Errorf("node ScratchDir is required") } - namePrefix := fmt.Sprintf("%s-service-connect-%s", node.GetDatacenter(), sidecarServiceName) + namePrefix := fmt.Sprintf("%s-service-connect-%s", node.GetDatacenter(), sidecarCfg.Name) containerName := utils.RandName(namePrefix) envoyVersion := getEnvoyVersion() @@ -181,8 +187,9 @@ func NewConnectService(ctx context.Context, sidecarServiceName string, serviceID Name: containerName, Cmd: []string{ "consul", "connect", "envoy", - "-sidecar-for", serviceID, + "-sidecar-for", sidecarCfg.ServiceID, "-admin-bind", fmt.Sprintf("0.0.0.0:%d", internalAdminPort), + "-namespace", sidecarCfg.Namespace, "--", "--log-level", envoyLogLevel, }, @@ -240,7 +247,7 @@ func NewConnectService(ctx context.Context, sidecarServiceName string, serviceID ip: info.IP, externalAdminPort: info.MappedPorts[adminPortStr].Int(), internalAdminPort: internalAdminPort, - serviceName: sidecarServiceName, + serviceName: sidecarCfg.Name, } for _, port := range appPortStrs { @@ -248,9 +255,9 @@ func NewConnectService(ctx context.Context, sidecarServiceName string, serviceID } fmt.Printf("NewConnectService: name %s, mapped App Port %d, service bind port %v\n", - serviceID, out.appPort, serviceBindPorts) + sidecarCfg.ServiceID, out.appPort, serviceBindPorts) fmt.Printf("NewConnectService sidecar: name %s, mapped admin port %d, admin port %d\n", - sidecarServiceName, out.externalAdminPort, internalAdminPort) + sidecarCfg.Name, out.externalAdminPort, internalAdminPort) return out, nil } diff --git a/test/integration/consul-container/libs/service/gateway.go b/test/integration/consul-container/libs/service/gateway.go index 8a9b87aa1964..32c899583b9f 100644 --- a/test/integration/consul-container/libs/service/gateway.go +++ b/test/integration/consul-container/libs/service/gateway.go @@ -112,7 +112,6 @@ func (g gatewayContainer) GetPort(port int) (int, error) { return 0, fmt.Errorf("port does not exist") } return p, nil - } func (g gatewayContainer) Restart() error { @@ -140,13 +139,19 @@ func (g gatewayContainer) GetStatus() (string, error) { return state.Status, err } -func NewGatewayService(ctx context.Context, name string, kind string, node libcluster.Agent, ports ...int) (Service, error) { +type GatewayConfig struct { + Name string + Kind string + Namespace string +} + +func NewGatewayService(ctx context.Context, gwCfg GatewayConfig, node libcluster.Agent, ports ...int) (Service, error) { nodeConfig := node.GetConfig() if nodeConfig.ScratchDir == "" { return nil, fmt.Errorf("node ScratchDir is required") } - namePrefix := fmt.Sprintf("%s-service-gateway-%s", node.GetDatacenter(), name) + namePrefix := fmt.Sprintf("%s-service-gateway-%s", node.GetDatacenter(), gwCfg.Name) containerName := utils.RandName(namePrefix) envoyVersion := getEnvoyVersion() @@ -174,9 +179,10 @@ func NewGatewayService(ctx context.Context, name string, kind string, node libcl Name: containerName, Cmd: []string{ "consul", "connect", "envoy", - fmt.Sprintf("-gateway=%s", kind), + fmt.Sprintf("-gateway=%s", gwCfg.Kind), "-register", - "-service", name, + "-namespace", gwCfg.Namespace, + "-service", gwCfg.Name, "-address", "{{ GetInterfaceIP \"eth0\" }}:8443", "-admin-bind", fmt.Sprintf("0.0.0.0:%d", adminPort), "--", @@ -242,7 +248,7 @@ func NewGatewayService(ctx context.Context, name string, kind string, node libcl ip: info.IP, port: info.MappedPorts[portStr].Int(), adminPort: info.MappedPorts[adminPortStr].Int(), - serviceName: name, + serviceName: gwCfg.Name, portMappings: portMappings, } diff --git a/test/integration/consul-container/libs/service/helpers.go b/test/integration/consul-container/libs/service/helpers.go index 7d468a652acd..3c678f768aef 100644 --- a/test/integration/consul-container/libs/service/helpers.go +++ b/test/integration/consul-container/libs/service/helpers.go @@ -5,10 +5,11 @@ import ( "fmt" "testing" + "github.com/stretchr/testify/require" + "github.com/hashicorp/consul/api" libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster" "github.com/hashicorp/consul/test/integration/consul-container/libs/utils" - "github.com/stretchr/testify/require" ) const ( @@ -27,13 +28,14 @@ type SidecarService struct { } type ServiceOpts struct { - Name string - ID string - Meta map[string]string - HTTPPort int - GRPCPort int - Checks Checks - Connect SidecarService + Name string + ID string + Meta map[string]string + HTTPPort int + GRPCPort int + Checks Checks + Connect SidecarService + Namespace string } // createAndRegisterStaticServerAndSidecar register the services and launch static-server containers @@ -55,8 +57,12 @@ func createAndRegisterStaticServerAndSidecar(node libcluster.Agent, grpcPort int deferClean.Add(func() { _ = serverService.Terminate() }) - - serverConnectProxy, err := NewConnectService(context.Background(), fmt.Sprintf("%s-sidecar", svc.ID), svc.ID, []int{svc.Port}, node) // bindPort not used + sidecarCfg := SidecarConfig{ + Name: fmt.Sprintf("%s-sidecar", svc.ID), + ServiceID: svc.ID, + Namespace: svc.Namespace, + } + serverConnectProxy, err := NewConnectService(context.Background(), sidecarCfg, []int{svc.Port}, node) // bindPort not used if err != nil { return nil, nil, err } @@ -82,6 +88,7 @@ func CreateAndRegisterStaticServerAndSidecar(node libcluster.Agent, serviceOpts Proxy: &api.AgentServiceConnectProxyConfig{}, }, }, + Namespace: serviceOpts.Namespace, Check: &api.AgentServiceCheck{ Name: "Static Server Listening", TCP: fmt.Sprintf("127.0.0.1:%d", serviceOpts.HTTPPort), @@ -160,7 +167,12 @@ func CreateAndRegisterStaticClientSidecar( } // Create a service and proxy instance - clientConnectProxy, err := NewConnectService(context.Background(), fmt.Sprintf("%s-sidecar", StaticClientServiceName), StaticClientServiceName, []int{libcluster.ServiceUpstreamLocalBindPort}, node) + sidecarCfg := SidecarConfig{ + Name: fmt.Sprintf("%s-sidecar", StaticClientServiceName), + ServiceID: StaticClientServiceName, + } + + clientConnectProxy, err := NewConnectService(context.Background(), sidecarCfg, []int{libcluster.ServiceUpstreamLocalBindPort}, node) if err != nil { return nil, err } diff --git a/test/integration/consul-container/libs/topology/peering_topology.go b/test/integration/consul-container/libs/topology/peering_topology.go index 52df1b88f479..0e853f7adda3 100644 --- a/test/integration/consul-container/libs/topology/peering_topology.go +++ b/test/integration/consul-container/libs/topology/peering_topology.go @@ -67,9 +67,13 @@ func BasicPeeringTwoClustersSetup( }) // Create the mesh gateway for dataplane traffic and peering control plane traffic (if enabled) - acceptingClusterGateway, err := libservice.NewGatewayService(context.Background(), "mesh", "mesh", acceptingCluster.Clients()[0]) + gwCfg := libservice.GatewayConfig{ + Name: "mesh", + Kind: "mesh", + } + acceptingClusterGateway, err := libservice.NewGatewayService(context.Background(), gwCfg, acceptingCluster.Clients()[0]) require.NoError(t, err) - dialingClusterGateway, err := libservice.NewGatewayService(context.Background(), "mesh", "mesh", dialingCluster.Clients()[0]) + dialingClusterGateway, err := libservice.NewGatewayService(context.Background(), gwCfg, dialingCluster.Clients()[0]) require.NoError(t, err) // Enable peering control plane traffic through mesh gateway diff --git a/test/integration/consul-container/test/gateways/gateway_endpoint_test.go b/test/integration/consul-container/test/gateways/gateway_endpoint_test.go index 9b0ed15bb523..c73b7e4a5700 100644 --- a/test/integration/consul-container/test/gateways/gateway_endpoint_test.go +++ b/test/integration/consul-container/test/gateways/gateway_endpoint_test.go @@ -9,6 +9,9 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/hashicorp/consul/api" "github.com/hashicorp/consul/sdk/testutil/retry" libassert "github.com/hashicorp/consul/test/integration/consul-container/libs/assert" @@ -17,8 +20,6 @@ import ( libtopology "github.com/hashicorp/consul/test/integration/consul-container/libs/topology" "github.com/hashicorp/consul/test/integration/consul-container/libs/utils" "github.com/hashicorp/go-cleanhttp" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) // Creates a gateway service and tests to see if it is routable @@ -145,7 +146,7 @@ func createCluster(t *testing.T, ports ...int) *libcluster.Cluster { return cluster } -func createGateway(gatewayName string, protocol string, listenerPort int) *api.APIGatewayConfigEntry { +func createGatewayConfigEntry(gatewayName, protocol, namespace string, listenerPort int) *api.APIGatewayConfigEntry { return &api.APIGatewayConfigEntry{ Kind: api.APIGateway, Name: gatewayName, @@ -156,6 +157,7 @@ func createGateway(gatewayName string, protocol string, listenerPort int) *api.A Protocol: protocol, }, }, + Namespace: namespace, } } @@ -208,8 +210,8 @@ func createService(t *testing.T, cluster *libcluster.Cluster, serviceOpts *libse libassert.CatalogServiceExists(t, client, serviceOpts.Name, nil) return service - } + func createServices(t *testing.T, cluster *libcluster.Cluster, ports ...int) (libservice.Service, libservice.Service) { node := cluster.Agents[0] client := node.GetClient() @@ -222,8 +224,12 @@ func createServices(t *testing.T, cluster *libcluster.Cluster, ports ...int) (li } clientConnectProxy := createService(t, cluster, serviceOpts, nil) + gwCfg := libservice.GatewayConfig{ + Name: "api-gateway", + Kind: "api", + } - gatewayService, err := libservice.NewGatewayService(context.Background(), "api-gateway", "api", cluster.Agents[0], ports...) + gatewayService, err := libservice.NewGatewayService(context.Background(), gwCfg, cluster.Agents[0], ports...) require.NoError(t, err) libassert.CatalogServiceExists(t, client, "api-gateway", nil) @@ -284,7 +290,7 @@ func checkRoute(t *testing.T, port int, path string, headers map[string]string, r.Fatal("unexpected response code returned") } - //if debug is expected, debug should be in the response body + // if debug is expected, debug should be in the response body assert.Equal(t, expected.debug, strings.Contains(string(body), "debug")) if expected.statusCode != res.StatusCode { r.Fatal("unexpected response body returned") @@ -293,7 +299,6 @@ func checkRoute(t *testing.T, port int, path string, headers map[string]string, if !strings.Contains(string(body), phrase) { r.Fatal("received an incorrect response ", string(body)) } - }) } diff --git a/test/integration/consul-container/test/gateways/http_route_test.go b/test/integration/consul-container/test/gateways/http_route_test.go index d7e30c6a7c89..bf2745b20688 100644 --- a/test/integration/consul-container/test/gateways/http_route_test.go +++ b/test/integration/consul-container/test/gateways/http_route_test.go @@ -57,28 +57,36 @@ func TestHTTPRouteFlattening(t *testing.T) { cluster, _, _ := libtopology.NewCluster(t, clusterConfig) client := cluster.Agents[0].GetClient() + namespace := getNamespace() + if namespace != "" { + ns := &api.Namespace{Name: namespace} + _, _, err := client.Namespaces().Create(ns, nil) + require.NoError(t, err) + } + service1ResponseCode := 200 service2ResponseCode := 418 serviceOne := createService(t, cluster, &libservice.ServiceOpts{ - Name: "service1", - ID: "service1", - HTTPPort: 8080, - GRPCPort: 8079, + Name: "service1", + ID: "service1", + HTTPPort: 8080, + GRPCPort: 8079, + Namespace: namespace, }, []string{ // customizes response code so we can distinguish between which service is responding "-echo-server-default-params", fmt.Sprintf("status=%d", service1ResponseCode), }) serviceTwo := createService(t, cluster, &libservice.ServiceOpts{ - Name: "service2", - ID: "service2", - HTTPPort: 8081, - GRPCPort: 8082, + Name: "service2", + ID: "service2", + HTTPPort: 8081, + GRPCPort: 8082, + Namespace: namespace, }, []string{ "-echo-server-default-params", fmt.Sprintf("status=%d", service2ResponseCode), }, ) - namespace := getNamespace() gatewayName := randomName("gw", 16) routeOneName := randomName("route", 16) routeTwoName := randomName("route", 16) @@ -87,8 +95,9 @@ func TestHTTPRouteFlattening(t *testing.T) { // write config entries proxyDefaults := &api.ProxyConfigEntry{ - Kind: api.ProxyDefaults, - Name: api.ProxyConfigGlobal, + Kind: api.ProxyDefaults, + Name: api.ProxyConfigGlobal, + Namespace: "", // proxy-defaults can only be set in the default namespace Config: map[string]interface{}{ "protocol": "http", }, @@ -106,6 +115,7 @@ func TestHTTPRouteFlattening(t *testing.T) { Protocol: "http", }, }, + Namespace: namespace, } routeOne := &api.HTTPRouteConfigEntry{ @@ -189,9 +199,14 @@ func TestHTTPRouteFlattening(t *testing.T) { require.NoError(t, cluster.ConfigEntryWrite(routeTwo)) // create gateway service - gatewayService, err := libservice.NewGatewayService(context.Background(), gatewayName, "api", cluster.Agents[0], listenerPort) + gwCfg := libservice.GatewayConfig{ + Name: gatewayName, + Kind: "api", + Namespace: namespace, + } + gatewayService, err := libservice.NewGatewayService(context.Background(), gwCfg, cluster.Agents[0], listenerPort) require.NoError(t, err) - libassert.CatalogServiceExists(t, client, gatewayName, nil) + libassert.CatalogServiceExists(t, client, gatewayName, &api.QueryOptions{Namespace: namespace}) // make sure config entries have been properly created checkGatewayConfigEntry(t, client, gatewayName, namespace) @@ -201,8 +216,7 @@ func TestHTTPRouteFlattening(t *testing.T) { // gateway resolves routes gatewayPort, err := gatewayService.GetPort(listenerPort) require.NoError(t, err) - - // route 2 with headers + fmt.Println("Gateway Port: ", gatewayPort) // Same v2 path with and without header checkRoute(t, gatewayPort, "/v2", map[string]string{ @@ -233,7 +247,6 @@ func TestHTTPRouteFlattening(t *testing.T) { checkRoute(t, gatewayPort, "/v2", map[string]string{ "Host": "test.example", }, checkOptions{debug: false, statusCode: service1ResponseCode, testName: "service1, v2 path with v2 hostname"}) - } func TestHTTPRoutePathRewrite(t *testing.T) { @@ -252,12 +265,19 @@ func TestHTTPRoutePathRewrite(t *testing.T) { barStatusCode := 201 fooPath := "/v1/foo" barPath := "/v1/bar" + namespace := getNamespace() + if namespace != "" { + ns := &api.Namespace{Name: namespace} + _, _, err := client.Namespaces().Create(ns, nil) + require.NoError(t, err) + } fooService := createService(t, cluster, &libservice.ServiceOpts{ - Name: "foo", - ID: "foo", - HTTPPort: 8080, - GRPCPort: 8081, + Name: "foo", + ID: "foo", + HTTPPort: 8080, + GRPCPort: 8081, + Namespace: namespace, }, []string{ // customizes response code so we can distinguish between which service is responding "-echo-debug-path", fooPath, @@ -267,15 +287,15 @@ func TestHTTPRoutePathRewrite(t *testing.T) { Name: "bar", ID: "bar", // TODO we can potentially get conflicts if these ports are the same - HTTPPort: 8079, - GRPCPort: 8078, + HTTPPort: 8079, + GRPCPort: 8078, + Namespace: namespace, }, []string{ "-echo-debug-path", barPath, "-echo-server-default-params", fmt.Sprintf("status=%d", barStatusCode), }, ) - namespace := getNamespace() gatewayName := randomName("gw", 16) invalidRouteName := randomName("route", 16) validRouteName := randomName("route", 16) @@ -284,8 +304,9 @@ func TestHTTPRoutePathRewrite(t *testing.T) { // write config entries proxyDefaults := &api.ProxyConfigEntry{ - Kind: api.ProxyDefaults, - Name: api.ProxyConfigGlobal, + Kind: api.ProxyDefaults, + Name: api.ProxyConfigGlobal, + Namespace: "", // proxy-defaults can only be set in the default namespace Config: map[string]interface{}{ "protocol": "http", }, @@ -293,7 +314,7 @@ func TestHTTPRoutePathRewrite(t *testing.T) { require.NoError(t, cluster.ConfigEntryWrite(proxyDefaults)) - apiGateway := createGateway(gatewayName, "http", listenerPort) + apiGateway := createGatewayConfigEntry(gatewayName, "http", namespace, listenerPort) fooRoute := &api.HTTPRouteConfigEntry{ Kind: api.HTTPRoute, @@ -378,9 +399,14 @@ func TestHTTPRoutePathRewrite(t *testing.T) { require.NoError(t, cluster.ConfigEntryWrite(barRoute)) // create gateway service - gatewayService, err := libservice.NewGatewayService(context.Background(), gatewayName, "api", cluster.Agents[0], listenerPort) + gwCfg := libservice.GatewayConfig{ + Name: gatewayName, + Kind: "api", + Namespace: namespace, + } + gatewayService, err := libservice.NewGatewayService(context.Background(), gwCfg, cluster.Agents[0], listenerPort) require.NoError(t, err) - libassert.CatalogServiceExists(t, client, gatewayName, nil) + libassert.CatalogServiceExists(t, client, gatewayName, &api.QueryOptions{Namespace: namespace}) // make sure config entries have been properly created checkGatewayConfigEntry(t, client, gatewayName, namespace) @@ -402,7 +428,7 @@ func TestHTTPRoutePathRewrite(t *testing.T) { // make sure foo is being sent to proper service checkRoute(t, gatewayPort, fooUnrewritten+"/foo", map[string]string{ "Host": "test.foo", - }, checkOptions{debug: false, statusCode: fooStatusCode, testName: "foo service"}) + }, checkOptions{debug: false, statusCode: fooStatusCode, testName: "foo service 2"}) // hit bar, making sure its been rewritten checkRoute(t, gatewayPort, barUnrewritten, map[string]string{ @@ -413,7 +439,6 @@ func TestHTTPRoutePathRewrite(t *testing.T) { checkRoute(t, gatewayPort, barUnrewritten+"/bar", map[string]string{ "Host": "test.foo", }, checkOptions{debug: false, statusCode: barStatusCode, testName: "bar service"}) - } func TestHTTPRouteParentRefChange(t *testing.T) { @@ -431,23 +456,32 @@ func TestHTTPRouteParentRefChange(t *testing.T) { // create cluster and service cluster := createCluster(t, listenerOnePort, listenerTwoPort) client := cluster.Agents[0].GetClient() - service := createService(t, cluster, &libservice.ServiceOpts{ - Name: "service", - ID: "service", - HTTPPort: 8080, - GRPCPort: 8079, - }, []string{}) // getNamespace() should always return an empty string in Consul OSS namespace := getNamespace() + if namespace != "" { + ns := &api.Namespace{Name: namespace} + _, _, err := client.Namespaces().Create(ns, nil) + require.NoError(t, err) + } + + service := createService(t, cluster, &libservice.ServiceOpts{ + Name: "service", + ID: "service", + HTTPPort: 8080, + GRPCPort: 8079, + Namespace: namespace, + }, []string{}) + gatewayOneName := randomName("gw1", 16) gatewayTwoName := randomName("gw2", 16) routeName := randomName("route", 16) // write config entries proxyDefaults := &api.ProxyConfigEntry{ - Kind: api.ProxyDefaults, - Name: api.ProxyConfigGlobal, + Kind: api.ProxyDefaults, + Name: api.ProxyConfigGlobal, + Namespace: "", // proxy-defaults can only be set in the default namespace Config: map[string]interface{}{ "protocol": "http", }, @@ -467,6 +501,7 @@ func TestHTTPRouteParentRefChange(t *testing.T) { Hostname: "test.foo", }, }, + Namespace: namespace, } require.NoError(t, cluster.ConfigEntryWrite(gatewayOne)) require.Eventually(t, func() bool { @@ -481,9 +516,14 @@ func TestHTTPRouteParentRefChange(t *testing.T) { }, time.Second*10, time.Second*1) // create gateway service - gatewayOneService, err := libservice.NewGatewayService(context.Background(), gatewayOneName, "api", cluster.Agents[0], listenerOnePort) + gwOneCfg := libservice.GatewayConfig{ + Name: gatewayOneName, + Kind: "api", + Namespace: namespace, + } + gatewayOneService, err := libservice.NewGatewayService(context.Background(), gwOneCfg, cluster.Agents[0], listenerOnePort) require.NoError(t, err) - libassert.CatalogServiceExists(t, client, gatewayOneName, nil) + libassert.CatalogServiceExists(t, client, gatewayOneName, &api.QueryOptions{Namespace: namespace}) // create gateway config entry gatewayTwo := &api.APIGatewayConfigEntry{ @@ -497,6 +537,7 @@ func TestHTTPRouteParentRefChange(t *testing.T) { Hostname: "test.example", }, }, + Namespace: namespace, } require.NoError(t, cluster.ConfigEntryWrite(gatewayTwo)) @@ -513,9 +554,14 @@ func TestHTTPRouteParentRefChange(t *testing.T) { }, time.Second*10, time.Second*1) // create gateway service - gatewayTwoService, err := libservice.NewGatewayService(context.Background(), gatewayTwoName, "api", cluster.Agents[0], listenerTwoPort) + gwTwoCfg := libservice.GatewayConfig{ + Name: gatewayTwoName, + Kind: "api", + Namespace: namespace, + } + gatewayTwoService, err := libservice.NewGatewayService(context.Background(), gwTwoCfg, cluster.Agents[0], listenerTwoPort) require.NoError(t, err) - libassert.CatalogServiceExists(t, client, gatewayTwoName, nil) + libassert.CatalogServiceExists(t, client, gatewayTwoName, &api.QueryOptions{Namespace: namespace}) // create route to service, targeting first gateway route := &api.HTTPRouteConfigEntry{ diff --git a/test/integration/consul-container/test/upgrade/healthcheck_test.go b/test/integration/consul-container/test/upgrade/healthcheck_test.go index 8ef12af3c2d8..5789ead6e06a 100644 --- a/test/integration/consul-container/test/upgrade/healthcheck_test.go +++ b/test/integration/consul-container/test/upgrade/healthcheck_test.go @@ -5,9 +5,10 @@ import ( "testing" "time" - "github.com/hashicorp/go-version" "github.com/stretchr/testify/require" + "github.com/hashicorp/go-version" + "github.com/hashicorp/consul/api" libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster" libservice "github.com/hashicorp/consul/test/integration/consul-container/libs/service" diff --git a/test/integration/consul-container/test/upgrade/ingress_gateway_test.go b/test/integration/consul-container/test/upgrade/ingress_gateway_test.go index 71a55d1353f6..64cb72179e47 100644 --- a/test/integration/consul-container/test/upgrade/ingress_gateway_test.go +++ b/test/integration/consul-container/test/upgrade/ingress_gateway_test.go @@ -10,6 +10,9 @@ import ( "time" "github.com/docker/go-connections/nat" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/hashicorp/consul/api" "github.com/hashicorp/consul/sdk/testutil/retry" libassert "github.com/hashicorp/consul/test/integration/consul-container/libs/assert" @@ -17,8 +20,6 @@ import ( libservice "github.com/hashicorp/consul/test/integration/consul-container/libs/service" "github.com/hashicorp/consul/test/integration/consul-container/libs/topology" "github.com/hashicorp/consul/test/integration/consul-container/libs/utils" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) // These tests adapt BATS-based tests from test/integration/connect/case-ingress-gateway* @@ -97,7 +98,11 @@ func TestIngressGateway_UpgradeToTarget_fromLatest(t *testing.T) { }, })) - igw, err := libservice.NewGatewayService(context.Background(), nameIG, "ingress", cluster.Servers()[0]) + gwCfg := libservice.GatewayConfig{ + Name: nameIG, + Kind: "ingress", + } + igw, err := libservice.NewGatewayService(context.Background(), gwCfg, cluster.Servers()[0]) require.NoError(t, err) t.Logf("created gateway: %#v", igw) @@ -226,7 +231,6 @@ func TestIngressGateway_UpgradeToTarget_fromLatest(t *testing.T) { "Ingress should have set the client ip from dynamic Envoy variable") assert.NotContains(t, string(body), "X-Bad-Req: true", "Ingress should have removed the bad request header") - }) t.Run("response header manipulation", func(t *testing.T) { const params = "?header=x-bad-resp:true&header=x-existing-1:original&header=x-existing-2:original" diff --git a/test/integration/consul-container/test/upgrade/peering_http_test.go b/test/integration/consul-container/test/upgrade/peering_http_test.go index d081ead8bcde..e7c81023855e 100644 --- a/test/integration/consul-container/test/upgrade/peering_http_test.go +++ b/test/integration/consul-container/test/upgrade/peering_http_test.go @@ -432,7 +432,12 @@ func createAndRegisterStaticClientSidecarWith2Upstreams(c *cluster.Cluster, dest } // Create a service and proxy instance - clientConnectProxy, err := libservice.NewConnectService(context.Background(), fmt.Sprintf("%s-sidecar", libservice.StaticClientServiceName), libservice.StaticClientServiceName, []int{cluster.ServiceUpstreamLocalBindPort, cluster.ServiceUpstreamLocalBindPort2}, node) + sidecarCfg := libservice.SidecarConfig{ + Name: fmt.Sprintf("%s-sidecar", libservice.StaticClientServiceName), + ServiceID: libservice.StaticClientServiceName, + } + + clientConnectProxy, err := libservice.NewConnectService(context.Background(), sidecarCfg, []int{cluster.ServiceUpstreamLocalBindPort, cluster.ServiceUpstreamLocalBindPort2}, node) if err != nil { return nil, err } diff --git a/test/integration/consul-container/test/wanfed/wanfed_peering_test.go b/test/integration/consul-container/test/wanfed/wanfed_peering_test.go index 1355c7ede4dd..df0c2ca5920d 100644 --- a/test/integration/consul-container/test/wanfed/wanfed_peering_test.go +++ b/test/integration/consul-container/test/wanfed/wanfed_peering_test.go @@ -4,11 +4,12 @@ import ( "context" "testing" + "github.com/stretchr/testify/require" + "github.com/hashicorp/consul/api" libassert "github.com/hashicorp/consul/test/integration/consul-container/libs/assert" libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster" libservice "github.com/hashicorp/consul/test/integration/consul-container/libs/service" - "github.com/stretchr/testify/require" ) func TestPeering_WanFedSecondaryDC(t *testing.T) { @@ -36,7 +37,11 @@ func TestPeering_WanFedSecondaryDC(t *testing.T) { t.Run("secondary dc can peer to alpha dc", func(t *testing.T) { // Create the gateway - _, err := libservice.NewGatewayService(context.Background(), "mesh", "mesh", c3.Servers()[0]) + gwCfg := libservice.GatewayConfig{ + Name: "mesh", + Kind: "mesh", + } + _, err := libservice.NewGatewayService(context.Background(), gwCfg, c3.Servers()[0]) require.NoError(t, err) // Create the peering connection From 152c75349ea93b15b2b4b236edfcebcb790786d7 Mon Sep 17 00:00:00 2001 From: wangxinyi7 <121973291+wangxinyi7@users.noreply.github.com> Date: Wed, 15 Mar 2023 11:21:24 -0700 Subject: [PATCH 02/30] net 2731 ip config entry OSS version (#16642) * ip config entry * name changing * move to ent * ent version * renaming * change format * renaming * refactor * add default values --- agent/consul/state/config_entry.go | 1 + agent/structs/config_entry.go | 5 ++ agent/structs/config_entry_oss.go | 4 ++ api/config_entry.go | 3 ++ api/config_entry_rate_limit_ip.go | 78 ++++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 api/config_entry_rate_limit_ip.go diff --git a/agent/consul/state/config_entry.go b/agent/consul/state/config_entry.go index b37098aaf8a1..47d81de827a1 100644 --- a/agent/consul/state/config_entry.go +++ b/agent/consul/state/config_entry.go @@ -553,6 +553,7 @@ func validateProposedConfigEntryInGraph( case structs.InlineCertificate: case structs.HTTPRoute: case structs.TCPRoute: + case structs.RateLimitIPConfig: default: return fmt.Errorf("unhandled kind %q during validation of %q", kindName.Kind, kindName.Name) } diff --git a/agent/structs/config_entry.go b/agent/structs/config_entry.go index f330babf7093..5bc7716edaf3 100644 --- a/agent/structs/config_entry.go +++ b/agent/structs/config_entry.go @@ -40,6 +40,8 @@ const ( InlineCertificate string = "inline-certificate" HTTPRoute string = "http-route" TCPRoute string = "tcp-route" + // TODO: decide if we want to highlight 'ip' keyword in the name of RateLimitIPConfig + RateLimitIPConfig string = "control-plane-request-limit" ProxyConfigGlobal string = "global" MeshConfigMesh string = "mesh" @@ -653,6 +655,9 @@ func (c *ConfigEntryRequest) UnmarshalBinary(data []byte) error { } func MakeConfigEntry(kind, name string) (ConfigEntry, error) { + if configEntry := makeEnterpriseConfigEntry(kind, name); configEntry != nil { + return configEntry, nil + } switch kind { case ServiceDefaults: return &ServiceConfigEntry{Name: name}, nil diff --git a/agent/structs/config_entry_oss.go b/agent/structs/config_entry_oss.go index 4bd3a93fcdff..288a2715d03a 100644 --- a/agent/structs/config_entry_oss.go +++ b/agent/structs/config_entry_oss.go @@ -44,3 +44,7 @@ func validateExportedServicesName(name string) error { } return nil } + +func makeEnterpriseConfigEntry(kind, name string) ConfigEntry { + return nil +} diff --git a/api/config_entry.go b/api/config_entry.go index 3a5b7bb36b84..9d734aa646a2 100644 --- a/api/config_entry.go +++ b/api/config_entry.go @@ -24,6 +24,7 @@ const ( MeshConfig string = "mesh" ExportedServices string = "exported-services" SamenessGroup string = "sameness-group" + RateLimitIPConfig string = "control-plane-request-limit" ProxyConfigGlobal string = "global" MeshConfigMesh string = "mesh" @@ -366,6 +367,8 @@ func makeConfigEntry(kind, name string) (ConfigEntry, error) { return &InlineCertificateConfigEntry{Kind: kind, Name: name}, nil case HTTPRoute: return &HTTPRouteConfigEntry{Kind: kind, Name: name}, nil + case RateLimitIPConfig: + return &RateLimitIPConfigEntry{Kind: kind, Name: name}, nil default: return nil, fmt.Errorf("invalid config entry kind: %s", kind) } diff --git a/api/config_entry_rate_limit_ip.go b/api/config_entry_rate_limit_ip.go new file mode 100644 index 000000000000..b6df6c3c5f46 --- /dev/null +++ b/api/config_entry_rate_limit_ip.go @@ -0,0 +1,78 @@ +package api + +type readWriteRatesConfig struct { + ReadRate float64 + WriteRate float64 +} + +type RateLimitIPConfigEntry struct { + // Kind of the config entry. This will be set to structs.RateLimitIPConfig + Kind string + Name string + Mode string // {permissive, enforcing, disabled} + + Meta map[string]string `json:",omitempty"` + // overall limits + ReadRate float64 + WriteRate float64 + + //limits specific to a type of call + ACL *readWriteRatesConfig `json:",omitempty"` + Catalog *readWriteRatesConfig `json:",omitempty"` + ConfigEntry *readWriteRatesConfig `json:",omitempty"` + ConnectCA *readWriteRatesConfig `json:",omitempty"` + Coordinate *readWriteRatesConfig `json:",omitempty"` + DiscoveryChain *readWriteRatesConfig `json:",omitempty"` + Health *readWriteRatesConfig `json:",omitempty"` + Intention *readWriteRatesConfig `json:",omitempty"` + KV *readWriteRatesConfig `json:",omitempty"` + Tenancy *readWriteRatesConfig `json:",omitempty"` + PreparedQuery *readWriteRatesConfig `json:",omitempty"` + Session *readWriteRatesConfig `json:",omitempty"` + Txn *readWriteRatesConfig `json:",omitempty"` + + // Partition is the partition the config entry is associated with. + // Partitioning is a Consul Enterprise feature. + Partition string `json:",omitempty"` + + // Namespace is the namespace the config entry is associated with. + // Namespacing is a Consul Enterprise feature. + Namespace string `json:",omitempty"` + + // CreateIndex is the Raft index this entry was created at. This is a + // read-only field. + CreateIndex uint64 + + // ModifyIndex is used for the Check-And-Set operations and can also be fed + // back into the WaitIndex of the QueryOptions in order to perform blocking + // queries. + ModifyIndex uint64 +} + +func (r *RateLimitIPConfigEntry) GetKind() string { + return RateLimitIPConfig +} +func (r *RateLimitIPConfigEntry) GetName() string { + if r == nil { + return "" + } + return r.Name +} +func (r *RateLimitIPConfigEntry) GetPartition() string { + return r.Partition +} +func (r *RateLimitIPConfigEntry) GetNamespace() string { + return r.Namespace +} +func (r *RateLimitIPConfigEntry) GetMeta() map[string]string { + if r == nil { + return nil + } + return r.Meta +} +func (r *RateLimitIPConfigEntry) GetCreateIndex() uint64 { + return r.CreateIndex +} +func (r *RateLimitIPConfigEntry) GetModifyIndex() uint64 { + return r.ModifyIndex +} From 57e034b74621180861226a01efeb3e9cedc74d3a Mon Sep 17 00:00:00 2001 From: Eric Haberkorn Date: Wed, 15 Mar 2023 14:30:36 -0400 Subject: [PATCH 03/30] fix confusing spiffe ids in golden tests (#16643) --- agent/structs/testing_catalog.go | 2 +- ...-proxy-with-chain-and-failover-to-cluster-peer.latest.golden | 2 +- ...-proxy-with-chain-and-redirect-to-cluster-peer.latest.golden | 2 +- ...ngress-with-chain-and-failover-to-cluster-peer.latest.golden | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/agent/structs/testing_catalog.go b/agent/structs/testing_catalog.go index f7f2a7e710e8..dd7a97386a5b 100644 --- a/agent/structs/testing_catalog.go +++ b/agent/structs/testing_catalog.go @@ -69,7 +69,7 @@ func TestCheckNodeServiceWithNameInPeer(t testing.T, name, dc, peer, ip string, name + ".default.default." + peer + ".external." + peerTrustDomain, }, SpiffeID: []string{ - "spiffe://" + peerTrustDomain + "/ns/default/dc/" + peer + "-dc/svc/" + name, + "spiffe://" + peerTrustDomain + "/ns/default/dc/" + dc + "/svc/" + name, }, Protocol: "tcp", }, diff --git a/agent/xds/testdata/clusters/connect-proxy-with-chain-and-failover-to-cluster-peer.latest.golden b/agent/xds/testdata/clusters/connect-proxy-with-chain-and-failover-to-cluster-peer.latest.golden index b6a9d7ec120c..3f2651de4176 100644 --- a/agent/xds/testdata/clusters/connect-proxy-with-chain-and-failover-to-cluster-peer.latest.golden +++ b/agent/xds/testdata/clusters/connect-proxy-with-chain-and-failover-to-cluster-peer.latest.golden @@ -105,7 +105,7 @@ }, "matchSubjectAltNames": [ { - "exact": "spiffe://1c053652-8512-4373-90cf-5a7f6263a994.consul/ns/default/dc/cluster-01-dc/svc/db" + "exact": "spiffe://1c053652-8512-4373-90cf-5a7f6263a994.consul/ns/default/dc/dc1/svc/db" } ] } diff --git a/agent/xds/testdata/clusters/connect-proxy-with-chain-and-redirect-to-cluster-peer.latest.golden b/agent/xds/testdata/clusters/connect-proxy-with-chain-and-redirect-to-cluster-peer.latest.golden index d6e4abf854ca..5b20a297d040 100644 --- a/agent/xds/testdata/clusters/connect-proxy-with-chain-and-redirect-to-cluster-peer.latest.golden +++ b/agent/xds/testdata/clusters/connect-proxy-with-chain-and-redirect-to-cluster-peer.latest.golden @@ -40,7 +40,7 @@ }, "matchSubjectAltNames": [ { - "exact": "spiffe://1c053652-8512-4373-90cf-5a7f6263a994.consul/ns/default/dc/cluster-01-dc/svc/db" + "exact": "spiffe://1c053652-8512-4373-90cf-5a7f6263a994.consul/ns/default/dc/dc2/svc/db" } ] } diff --git a/agent/xds/testdata/clusters/ingress-with-chain-and-failover-to-cluster-peer.latest.golden b/agent/xds/testdata/clusters/ingress-with-chain-and-failover-to-cluster-peer.latest.golden index f46b909b2400..3845b0231e97 100644 --- a/agent/xds/testdata/clusters/ingress-with-chain-and-failover-to-cluster-peer.latest.golden +++ b/agent/xds/testdata/clusters/ingress-with-chain-and-failover-to-cluster-peer.latest.golden @@ -106,7 +106,7 @@ }, "matchSubjectAltNames": [ { - "exact": "spiffe://1c053652-8512-4373-90cf-5a7f6263a994.consul/ns/default/dc/cluster-01-dc/svc/db" + "exact": "spiffe://1c053652-8512-4373-90cf-5a7f6263a994.consul/ns/default/dc/dc1/svc/db" } ] } From c26b6bc0376683d87325438d5d0a752564eedff5 Mon Sep 17 00:00:00 2001 From: Vipin John Wilson <37441623+vjwilson1987@users.noreply.github.com> Date: Thu, 16 Mar 2023 22:13:19 +0530 Subject: [PATCH 04/30] First cluster grpc service should be NodePort for the second cluster to connect (#16430) * First cluster grpc service should be NodePort This is based on the issue opened here https://github.com/hashicorp/consul-k8s/issues/1903 If you follow the documentation https://developer.hashicorp.com/consul/docs/k8s/deployment-configurations/single-dc-multi-k8s exactly as it is, the first cluster will only create the consul UI service on NodePort but not the rest of the services (including for grpc). By default, from the helm chart, they are created as headless services by setting clusterIP None. This will cause an issue for the second cluster to discover consul server on the first cluster over gRPC as it cannot simply cannot through gRPC default port 8502 and it ends up in an error as shown in the issue https://github.com/hashicorp/consul-k8s/issues/1903 As a solution, the grpc service should be exposed using NodePort (or LoadBalancer). I added those changes required in both cluster1-values.yaml and cluster2-values.yaml, and also a description for those changes for the normal users to understand. Kindly review and I hope this PR will be accepted. * Update website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> * Update website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> * Update website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> --------- Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> --- .../single-dc-multi-k8s.mdx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx b/website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx index b9694b391250..46fc2228016a 100644 --- a/website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx +++ b/website/content/docs/k8s/deployment-configurations/single-dc-multi-k8s.mdx @@ -50,6 +50,17 @@ global: gossipEncryption: secretName: consul-gossip-encryption-key secretKey: key +server: + exposeService: + enabled: true + type: NodePort + nodePort: + ## all are random nodePorts and you can set your own + http: 30010 + https: 30011 + serf: 30012 + rpc: 30013 + grpc: 30014 ui: service: type: NodePort @@ -65,6 +76,8 @@ The UI's service type is set to be `NodePort`. This is needed to connect to servers from another cluster without using the pod IPs of the servers, which are likely going to change. +Other services are exposed as `NodePort` services and configured with random port numbers. In this example, the `grpc` port is set to `30014`, which enables services to discover Consul servers using gRPC when connecting from another cluster. + To deploy, first generate the Gossip encryption key and save it as a Kubernetes secret. ```shell-session @@ -123,6 +136,8 @@ externalServers: hosts: ["10.0.0.4"] # The node port of the UI's NodePort service or the load balancer port. httpsPort: 31557 + # Matches the gRPC port of the Consul servers in the first cluster. + grpcPort: 30014 tlsServerName: server.dc1.consul # The address of the kube API server of this Kubernetes cluster k8sAuthMethodHost: https://kubernetes.example.com:443 @@ -147,6 +162,8 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cluster1-consul-ui NodePort 10.0.240.80 443:31557/TCP 40h ``` +The `grpcPort: 30014` configuration refers to the gRPC port number specified in the `NodePort` configuration in the first cluster. + Set the `externalServer.tlsServerName` to `server.dc1.consul`. This the DNS SAN (Subject Alternative Name) that is present in the Consul server's certificate. This is required because the connection to the Consul servers uses the node IP, From 197ed67ea75390b9ef712491fc1dd454bb7d73d6 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 16 Mar 2023 14:11:24 -0400 Subject: [PATCH 05/30] Add in query options for catalog service existing in a specific (#16652) namespace when creating service for tests --- .../consul-container/test/gateways/gateway_endpoint_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/consul-container/test/gateways/gateway_endpoint_test.go b/test/integration/consul-container/test/gateways/gateway_endpoint_test.go index c73b7e4a5700..d79bf7c65e4c 100644 --- a/test/integration/consul-container/test/gateways/gateway_endpoint_test.go +++ b/test/integration/consul-container/test/gateways/gateway_endpoint_test.go @@ -206,8 +206,8 @@ func createService(t *testing.T, cluster *libcluster.Cluster, serviceOpts *libse service, _, err := libservice.CreateAndRegisterStaticServerAndSidecar(node, serviceOpts, containerArgs...) require.NoError(t, err) - libassert.CatalogServiceExists(t, client, serviceOpts.Name+"-sidecar-proxy", nil) - libassert.CatalogServiceExists(t, client, serviceOpts.Name, nil) + libassert.CatalogServiceExists(t, client, serviceOpts.Name+"-sidecar-proxy", &api.QueryOptions{Namespace: serviceOpts.Namespace}) + libassert.CatalogServiceExists(t, client, serviceOpts.Name, &api.QueryOptions{Namespace: serviceOpts.Namespace}) return service } From b47315199411ffcf25b52215731be960eff8af08 Mon Sep 17 00:00:00 2001 From: Valeriia Ruban Date: Thu, 16 Mar 2023 18:57:59 -0700 Subject: [PATCH 06/30] fix: add AccessorID property to PUT token request (#16660) --- .changelog/16660.txt | 3 +++ ui/packages/consul-ui/app/adapters/token.js | 1 + 2 files changed, 4 insertions(+) create mode 100644 .changelog/16660.txt diff --git a/.changelog/16660.txt b/.changelog/16660.txt new file mode 100644 index 000000000000..f8971862165c --- /dev/null +++ b/.changelog/16660.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: fix PUT token request with adding missed AccessorID property to requestBody +``` \ No newline at end of file diff --git a/ui/packages/consul-ui/app/adapters/token.js b/ui/packages/consul-ui/app/adapters/token.js index e085bfe15402..555b334e5e5b 100644 --- a/ui/packages/consul-ui/app/adapters/token.js +++ b/ui/packages/consul-ui/app/adapters/token.js @@ -85,6 +85,7 @@ export default class TokenAdapter extends Adapter { ${{ Description: serialized.Description, + AccessorID: serialized.AccessorID, Policies: serialized.Policies, Roles: serialized.Roles, ServiceIdentities: serialized.ServiceIdentities, From eaa39f4ef59a41eff0334e15c27917e35ac7a52f Mon Sep 17 00:00:00 2001 From: Eric Haberkorn Date: Fri, 17 Mar 2023 10:48:06 -0400 Subject: [PATCH 07/30] add sameness group support to service resolver failover and redirects (#16664) --- agent/configentry/discoverychain.go | 26 +- agent/consul/state/config_entry.go | 33 +- .../state/config_entry_sameness_group_oss.go | 18 + agent/structs/config_entry_discoverychain.go | 32 +- .../config_entry_discoverychain_oss.go | 13 + .../config_entry_discoverychain_oss_test.go | 24 + api/config_entry_discoverychain.go | 10 +- .../private/pbconfigentry/config_entry.gen.go | 4 + .../private/pbconfigentry/config_entry.pb.go | 1761 +++++++++-------- .../private/pbconfigentry/config_entry.proto | 2 + 10 files changed, 1032 insertions(+), 891 deletions(-) diff --git a/agent/configentry/discoverychain.go b/agent/configentry/discoverychain.go index 556d807b81ee..033abb9623b3 100644 --- a/agent/configentry/discoverychain.go +++ b/agent/configentry/discoverychain.go @@ -10,22 +10,24 @@ import ( // // None of these are defaulted. type DiscoveryChainSet struct { - Routers map[structs.ServiceID]*structs.ServiceRouterConfigEntry - Splitters map[structs.ServiceID]*structs.ServiceSplitterConfigEntry - Resolvers map[structs.ServiceID]*structs.ServiceResolverConfigEntry - Services map[structs.ServiceID]*structs.ServiceConfigEntry - Peers map[string]*pbpeering.Peering - ProxyDefaults map[string]*structs.ProxyConfigEntry + Routers map[structs.ServiceID]*structs.ServiceRouterConfigEntry + Splitters map[structs.ServiceID]*structs.ServiceSplitterConfigEntry + Resolvers map[structs.ServiceID]*structs.ServiceResolverConfigEntry + Services map[structs.ServiceID]*structs.ServiceConfigEntry + Peers map[string]*pbpeering.Peering + SamenessGroups map[string]*structs.SamenessGroupConfigEntry + ProxyDefaults map[string]*structs.ProxyConfigEntry } func NewDiscoveryChainSet() *DiscoveryChainSet { return &DiscoveryChainSet{ - Routers: make(map[structs.ServiceID]*structs.ServiceRouterConfigEntry), - Splitters: make(map[structs.ServiceID]*structs.ServiceSplitterConfigEntry), - Resolvers: make(map[structs.ServiceID]*structs.ServiceResolverConfigEntry), - Services: make(map[structs.ServiceID]*structs.ServiceConfigEntry), - Peers: make(map[string]*pbpeering.Peering), - ProxyDefaults: make(map[string]*structs.ProxyConfigEntry), + Routers: make(map[structs.ServiceID]*structs.ServiceRouterConfigEntry), + Splitters: make(map[structs.ServiceID]*structs.ServiceSplitterConfigEntry), + Resolvers: make(map[structs.ServiceID]*structs.ServiceResolverConfigEntry), + Services: make(map[structs.ServiceID]*structs.ServiceConfigEntry), + Peers: make(map[string]*pbpeering.Peering), + ProxyDefaults: make(map[string]*structs.ProxyConfigEntry), + SamenessGroups: make(map[string]*structs.SamenessGroupConfigEntry), } } diff --git a/agent/consul/state/config_entry.go b/agent/consul/state/config_entry.go index 47d81de827a1..0dcadb015361 100644 --- a/agent/consul/state/config_entry.go +++ b/agent/consul/state/config_entry.go @@ -1297,10 +1297,11 @@ func readDiscoveryChainConfigEntriesTxn( // the end of this function to indicate "no such entry". var ( - todoSplitters = make(map[structs.ServiceID]struct{}) - todoResolvers = make(map[structs.ServiceID]struct{}) - todoDefaults = make(map[structs.ServiceID]struct{}) - todoPeers = make(map[string]struct{}) + todoSplitters = make(map[structs.ServiceID]struct{}) + todoResolvers = make(map[structs.ServiceID]struct{}) + todoDefaults = make(map[structs.ServiceID]struct{}) + todoPeers = make(map[string]struct{}) + todoSamenessGroups = make(map[string]struct{}) ) sid := structs.NewServiceID(serviceName, entMeta) @@ -1406,6 +1407,10 @@ func readDiscoveryChainConfigEntriesTxn( for _, peer := range resolver.RelatedPeers() { todoPeers[peer] = struct{}{} } + + for _, peer := range resolver.RelatedSamenessGroups() { + todoSamenessGroups[peer] = struct{}{} + } } for { @@ -1448,6 +1453,26 @@ func readDiscoveryChainConfigEntriesTxn( } peerEntMeta := structs.DefaultEnterpriseMetaInPartition(entMeta.PartitionOrDefault()) + for sg := range todoSamenessGroups { + idx, entry, err := getSamenessGroupConfigEntryTxn(tx, ws, sg, overrides, peerEntMeta) + if err != nil { + return 0, nil, err + } + if idx > maxIdx { + maxIdx = idx + } + if entry == nil { + continue + } + + for _, e := range entry.Members { + if e.Peer != "" { + todoPeers[e.Peer] = struct{}{} + } + } + res.SamenessGroups[sg] = entry + } + for peerName := range todoPeers { q := Query{ Value: peerName, diff --git a/agent/consul/state/config_entry_sameness_group_oss.go b/agent/consul/state/config_entry_sameness_group_oss.go index d217061fc98c..0fc6fd03ee39 100644 --- a/agent/consul/state/config_entry_sameness_group_oss.go +++ b/agent/consul/state/config_entry_sameness_group_oss.go @@ -6,6 +6,8 @@ package state import ( "fmt" + "github.com/hashicorp/consul/acl" + "github.com/hashicorp/consul/agent/configentry" "github.com/hashicorp/consul/agent/structs" "github.com/hashicorp/go-memdb" ) @@ -27,3 +29,19 @@ func (*SamenessGroupDefaultIndex) FromArgs(args ...interface{}) ([]byte, error) func checkSamenessGroup(tx ReadTxn, newConfig structs.ConfigEntry) error { return fmt.Errorf("sameness-groups are an enterprise-only feature") } + +// getExportedServicesConfigEntryTxn is a convenience method for fetching a +// sameness-group config entries. +// +// If an override KEY is present for the requested config entry, the index +// returned will be 0. Any override VALUE (nil or otherwise) will be returned +// if there is a KEY match. +func getSamenessGroupConfigEntryTxn( + tx ReadTxn, + ws memdb.WatchSet, + name string, + overrides map[configentry.KindName]structs.ConfigEntry, + entMeta *acl.EnterpriseMeta, +) (uint64, *structs.SamenessGroupConfigEntry, error) { + return 0, nil, nil +} diff --git a/agent/structs/config_entry_discoverychain.go b/agent/structs/config_entry_discoverychain.go index 0d58acef8a5c..d44f3d4fa052 100644 --- a/agent/structs/config_entry_discoverychain.go +++ b/agent/structs/config_entry_discoverychain.go @@ -1053,6 +1053,12 @@ func (e *ServiceResolverConfigEntry) Validate() error { } switch { + case r.SamenessGroup != "" && r.ServiceSubset != "": + return fmt.Errorf("Redirect.SamenessGroup cannot be set with Redirect.ServiceSubset") + case r.SamenessGroup != "" && r.Partition != "": + return fmt.Errorf("Redirect.Partition cannot be set with Redirect.SamenessGroup") + case r.SamenessGroup != "" && r.Datacenter != "": + return fmt.Errorf("Redirect.SamenessGroup cannot be set with Redirect.Datacenter") case r.Peer != "" && r.ServiceSubset != "": return fmt.Errorf("Redirect.Peer cannot be set with Redirect.ServiceSubset") case r.Peer != "" && r.Partition != "": @@ -1116,6 +1122,17 @@ func (e *ServiceResolverConfigEntry) Validate() error { } } + if f.SamenessGroup != "" { + switch { + case len(f.Datacenters) > 0: + return fmt.Errorf("Bad Failover[%q]: SamenessGroup cannot be set with Datacenters", subset) + case f.ServiceSubset != "": + return fmt.Errorf("Bad Failover[%q]: SamenessGroup cannot be set with ServiceSubset", subset) + case len(f.Targets) > 0: + return fmt.Errorf("Bad Failover[%q]: SamenessGroup cannot be set with Targets", subset) + } + } + if len(f.Datacenters) != 0 && len(f.Targets) != 0 { return fmt.Errorf("Bad Failover[%q]: Targets cannot be set with Datacenters", subset) } @@ -1341,6 +1358,10 @@ type ServiceResolverRedirect struct { // Peer is the name of the cluster peer to resolve the service from instead // of the current one (optional). Peer string `json:",omitempty"` + + // SamenessGroup is the name of the sameness group to resolve the service from instead + // of the local partition. + SamenessGroup string `json:",omitempty"` } func (r *ServiceResolverRedirect) ToDiscoveryTargetOpts() DiscoveryTargetOpts { @@ -1355,7 +1376,13 @@ func (r *ServiceResolverRedirect) ToDiscoveryTargetOpts() DiscoveryTargetOpts { } func (r *ServiceResolverRedirect) isEmpty() bool { - return r.Service == "" && r.ServiceSubset == "" && r.Namespace == "" && r.Partition == "" && r.Datacenter == "" && r.Peer == "" + return r.Service == "" && + r.ServiceSubset == "" && + r.Namespace == "" && + r.Partition == "" && + r.Datacenter == "" && + r.Peer == "" && + r.SamenessGroup == "" } // There are some restrictions on what is allowed in here: @@ -1400,6 +1427,9 @@ type ServiceResolverFailover struct { // Policy specifies the exact mechanism used for failover. Policy *ServiceResolverFailoverPolicy `json:",omitempty"` + + // SamenessGroup specifies the sameness group to failover to. + SamenessGroup string `json:",omitempty"` } type ServiceResolverFailoverPolicy struct { diff --git a/agent/structs/config_entry_discoverychain_oss.go b/agent/structs/config_entry_discoverychain_oss.go index 3e07c218a72d..5a94fe48d97d 100644 --- a/agent/structs/config_entry_discoverychain_oss.go +++ b/agent/structs/config_entry_discoverychain_oss.go @@ -38,6 +38,10 @@ func (redir *ServiceResolverRedirect) ValidateEnterprise() error { return fmt.Errorf("Setting Namespace requires Consul Enterprise") } + if redir.SamenessGroup != "" { + return fmt.Errorf("Setting SamenessGroup requires Consul Enterprise") + } + return nil } @@ -54,6 +58,10 @@ func (failover *ServiceResolverFailover) ValidateEnterprise() error { return fmt.Errorf("Setting Namespace requires Consul Enterprise") } + if failover.SamenessGroup != "" { + return fmt.Errorf("Setting SamenessGroup requires Consul Enterprise") + } + return nil } @@ -102,3 +110,8 @@ func (f *ServiceResolverFailoverPolicy) ValidateEnterprise() error { return nil } + +// RelatedSamenessGroups doesn't return anything on open source. +func (e *ServiceResolverConfigEntry) RelatedSamenessGroups() []string { + return nil +} diff --git a/agent/structs/config_entry_discoverychain_oss_test.go b/agent/structs/config_entry_discoverychain_oss_test.go index 654c2ba703a0..06dcbccf2d63 100644 --- a/agent/structs/config_entry_discoverychain_oss_test.go +++ b/agent/structs/config_entry_discoverychain_oss_test.go @@ -21,6 +21,19 @@ func TestServiceResolverConfigEntry_OSS(t *testing.T) { } cases := []testcase{ + { + name: "failover with a sameness group on OSS", + entry: &ServiceResolverConfigEntry{ + Kind: ServiceResolver, + Name: "test", + Failover: map[string]ServiceResolverFailover{ + "*": { + SamenessGroup: "ns1", + }, + }, + }, + validateErr: `Bad Failover["*"]: Setting SamenessGroup requires Consul Enterprise`, + }, { name: "failover with a namespace on OSS", entry: &ServiceResolverConfigEntry{ @@ -83,6 +96,17 @@ func TestServiceResolverConfigEntry_OSS(t *testing.T) { }, validateErr: `Bad Failover["*"]: Setting failover policies requires Consul Enterprise`, }, + { + name: "setting redirect SamenessGroup on OSS", + entry: &ServiceResolverConfigEntry{ + Kind: ServiceResolver, + Name: "test", + Redirect: &ServiceResolverRedirect{ + SamenessGroup: "group", + }, + }, + validateErr: `Redirect: Setting SamenessGroup requires Consul Enterprise`, + }, { name: "setting redirect Namespace on OSS", entry: &ServiceResolverConfigEntry{ diff --git a/api/config_entry_discoverychain.go b/api/config_entry_discoverychain.go index a1980ff5ce49..4fd7471d0621 100644 --- a/api/config_entry_discoverychain.go +++ b/api/config_entry_discoverychain.go @@ -234,16 +234,18 @@ type ServiceResolverRedirect struct { Partition string `json:",omitempty"` Datacenter string `json:",omitempty"` Peer string `json:",omitempty"` + SamenessGroup string `json:",omitempty"` } type ServiceResolverFailover struct { Service string `json:",omitempty"` ServiceSubset string `json:",omitempty" alias:"service_subset"` // Referencing other partitions is not supported. - Namespace string `json:",omitempty"` - Datacenters []string `json:",omitempty"` - Targets []ServiceResolverFailoverTarget `json:",omitempty"` - Policy *ServiceResolverFailoverPolicy `json:",omitempty"` + Namespace string `json:",omitempty"` + Datacenters []string `json:",omitempty"` + Targets []ServiceResolverFailoverTarget `json:",omitempty"` + Policy *ServiceResolverFailoverPolicy `json:",omitempty"` + SamenessGroup string `json:",omitempty"` } type ServiceResolverFailoverTarget struct { diff --git a/proto/private/pbconfigentry/config_entry.gen.go b/proto/private/pbconfigentry/config_entry.gen.go index 7beeb9df418c..cca640a0ef95 100644 --- a/proto/private/pbconfigentry/config_entry.gen.go +++ b/proto/private/pbconfigentry/config_entry.gen.go @@ -1415,6 +1415,7 @@ func ServiceResolverFailoverToStructs(s *ServiceResolverFailover, t *structs.Ser ServiceResolverFailoverPolicyToStructs(s.Policy, &x) t.Policy = &x } + t.SamenessGroup = s.SamenessGroup } func ServiceResolverFailoverFromStructs(t *structs.ServiceResolverFailover, s *ServiceResolverFailover) { if s == nil { @@ -1439,6 +1440,7 @@ func ServiceResolverFailoverFromStructs(t *structs.ServiceResolverFailover, s *S ServiceResolverFailoverPolicyFromStructs(t.Policy, &x) s.Policy = &x } + s.SamenessGroup = t.SamenessGroup } func ServiceResolverFailoverPolicyToStructs(s *ServiceResolverFailoverPolicy, t *structs.ServiceResolverFailoverPolicy) { if s == nil { @@ -1484,6 +1486,7 @@ func ServiceResolverRedirectToStructs(s *ServiceResolverRedirect, t *structs.Ser t.Partition = s.Partition t.Datacenter = s.Datacenter t.Peer = s.Peer + t.SamenessGroup = s.SamenessGroup } func ServiceResolverRedirectFromStructs(t *structs.ServiceResolverRedirect, s *ServiceResolverRedirect) { if s == nil { @@ -1495,6 +1498,7 @@ func ServiceResolverRedirectFromStructs(t *structs.ServiceResolverRedirect, s *S s.Partition = t.Partition s.Datacenter = t.Datacenter s.Peer = t.Peer + s.SamenessGroup = t.SamenessGroup } func ServiceResolverSubsetToStructs(s *ServiceResolverSubset, t *structs.ServiceResolverSubset) { if s == nil { diff --git a/proto/private/pbconfigentry/config_entry.pb.go b/proto/private/pbconfigentry/config_entry.pb.go index 060570804659..c3533bdacae9 100644 --- a/proto/private/pbconfigentry/config_entry.pb.go +++ b/proto/private/pbconfigentry/config_entry.pb.go @@ -1339,6 +1339,7 @@ type ServiceResolverRedirect struct { Partition string `protobuf:"bytes,4,opt,name=Partition,proto3" json:"Partition,omitempty"` Datacenter string `protobuf:"bytes,5,opt,name=Datacenter,proto3" json:"Datacenter,omitempty"` Peer string `protobuf:"bytes,6,opt,name=Peer,proto3" json:"Peer,omitempty"` + SamenessGroup string `protobuf:"bytes,7,opt,name=SamenessGroup,proto3" json:"SamenessGroup,omitempty"` } func (x *ServiceResolverRedirect) Reset() { @@ -1415,6 +1416,13 @@ func (x *ServiceResolverRedirect) GetPeer() string { return "" } +func (x *ServiceResolverRedirect) GetSamenessGroup() string { + if x != nil { + return x.SamenessGroup + } + return "" +} + // mog annotation: // // target=github.com/hashicorp/consul/agent/structs.ServiceResolverFailover @@ -1431,6 +1439,7 @@ type ServiceResolverFailover struct { Datacenters []string `protobuf:"bytes,4,rep,name=Datacenters,proto3" json:"Datacenters,omitempty"` Targets []*ServiceResolverFailoverTarget `protobuf:"bytes,5,rep,name=Targets,proto3" json:"Targets,omitempty"` Policy *ServiceResolverFailoverPolicy `protobuf:"bytes,6,opt,name=Policy,proto3" json:"Policy,omitempty"` + SamenessGroup string `protobuf:"bytes,7,opt,name=SamenessGroup,proto3" json:"SamenessGroup,omitempty"` } func (x *ServiceResolverFailover) Reset() { @@ -1507,6 +1516,13 @@ func (x *ServiceResolverFailover) GetPolicy() *ServiceResolverFailoverPolicy { return nil } +func (x *ServiceResolverFailover) GetSamenessGroup() string { + if x != nil { + return x.SamenessGroup + } + return "" +} + // mog annotation: // // target=github.com/hashicorp/consul/agent/structs.ServiceResolverFailoverPolicy @@ -5593,7 +5609,7 @@ var file_private_pbconfigentry_config_entry_proto_rawDesc = []byte{ 0x62, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x6e, 0x6c, 0x79, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x4f, 0x6e, 0x6c, 0x79, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0xc9, + 0x08, 0x52, 0x0b, 0x4f, 0x6e, 0x6c, 0x79, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0xef, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x65, 0x72, @@ -5606,931 +5622,936 @@ var file_private_pbconfigentry_config_entry_proto_rawDesc = []byte{ 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x17, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x07, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, - 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x22, 0x33, 0x0a, 0x1d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x1d, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x44, 0x61, 0x74, - 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x22, 0xc7, 0x02, 0x0a, 0x0c, - 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x5d, 0x0a, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x4c, 0x65, 0x61, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, - 0x0a, 0x0c, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x61, 0x73, - 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0c, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, - 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x4d, 0x61, 0x78, 0x69, - 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x36, 0x0a, 0x12, 0x4c, - 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x43, 0x6f, 0x6f, 0x6b, - 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, - 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0c, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x50, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x50, 0x12, 0x1a, 0x0a, - 0x08, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x22, 0x69, 0x0a, 0x0c, 0x43, 0x6f, 0x6f, - 0x6b, 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x03, 0x54, 0x54, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x54, 0x54, 0x4c, - 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x50, 0x61, 0x74, 0x68, 0x22, 0x98, 0x03, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x49, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x54, - 0x4c, 0x53, 0x12, 0x54, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x53, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x57, 0x0a, - 0x08, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x8f, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x2e, 0x0a, 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x4d, 0x61, - 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, - 0x12, 0x34, 0x0a, 0x15, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x15, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x69, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, - 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x69, - 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x12, 0x50, - 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x22, 0xea, 0x01, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x4c, 0x0a, 0x03, 0x53, 0x44, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x61, + 0x6d, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x53, 0x61, 0x6d, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x22, 0xfd, 0x02, 0x0a, 0x17, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x61, + 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0b, 0x44, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x07, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, - 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x53, 0x44, 0x53, 0x12, 0x24, - 0x0a, 0x0d, 0x54, 0x4c, 0x53, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x54, 0x4c, 0x53, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x78, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x54, 0x4c, 0x53, - 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x69, - 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x5b, - 0x0a, 0x13, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x53, 0x44, 0x53, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x0f, - 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, - 0x51, 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x52, 0x07, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x06, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x61, + 0x6d, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x53, 0x61, 0x6d, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x22, 0x33, 0x0a, 0x1d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x22, 0xc7, 0x02, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x5d, 0x0a, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x69, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x0c, 0x48, 0x61, + 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x52, 0x0c, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, + 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x4d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, + 0x0f, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, + 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x36, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xd3, 0x01, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0c, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x50, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x50, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x22, 0x69, 0x0a, 0x0c, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2b, 0x0a, 0x03, 0x54, 0x54, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x54, 0x54, 0x4c, 0x12, 0x12, 0x0a, 0x04, + 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, + 0x22, 0x98, 0x03, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x12, 0x49, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x54, 0x4c, 0x53, 0x12, 0x54, + 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x49, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, - 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x54, 0x4c, 0x53, 0x22, 0xb7, 0x06, - 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x03, 0x54, 0x4c, - 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, - 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x54, 0x4c, 0x53, 0x12, 0x62, 0x0a, 0x0e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, - 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x64, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x73, 0x12, 0x53, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x08, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x02, 0x0a, 0x14, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x4d, 0x61, + 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x12, + 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x15, + 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x4d, 0x61, 0x78, + 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x12, 0x69, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, + 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xea, 0x01, + 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x03, + 0x53, 0x44, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x53, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x58, 0x0a, 0x0e, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x53, 0x44, 0x53, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x53, 0x44, 0x53, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x4c, + 0x53, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x54, 0x4c, 0x53, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x54, 0x4c, 0x53, 0x4d, 0x61, 0x78, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, + 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x50, + 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x51, 0x0a, 0x08, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x49, + 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x54, 0x4c, 0x53, 0x22, 0xb7, 0x06, 0x0a, 0x0e, 0x49, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x4d, - 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, - 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, - 0x15, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x4d, 0x61, - 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x12, 0x69, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x12, 0x50, 0x61, 0x73, 0x73, - 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x37, - 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x67, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x03, 0x53, 0x44, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, - 0x4c, 0x53, 0x53, 0x44, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x53, 0x44, 0x53, - 0x22, 0xcb, 0x02, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, - 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x03, 0x54, 0x4c, 0x53, 0x12, 0x62, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x64, 0x0a, 0x0f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x41, 0x64, 0x64, 0x12, - 0x55, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, - 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x03, 0x53, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x1a, 0x36, - 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, - 0x01, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x1a, 0x37, - 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x06, 0x0a, 0x0f, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x4e, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x5c, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x49, 0x44, 0x12, 0x4e, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x0a, 0x4c, - 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x46, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, - 0x65, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x10, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x4c, 0x65, 0x67, 0x61, 0x63, - 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x4c, - 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x10, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, + 0x73, 0x52, 0x0f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x53, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x4d, 0x61, 0x78, + 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x4d, 0x61, 0x78, + 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, + 0x69, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, - 0x04, 0x50, 0x65, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, - 0x72, 0x1a, 0x3d, 0x0a, 0x0f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x67, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, + 0x0a, 0x03, 0x53, 0x44, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x53, 0x44, + 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x53, 0x44, 0x53, 0x22, 0xcb, 0x02, 0x0a, + 0x13, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x43, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x41, 0x64, 0x64, 0x12, 0x55, 0x0a, 0x03, 0x53, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x48, 0x54, 0x54, 0x50, 0x22, 0xed, 0x01, 0x0a, - 0x17, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x74, 0x68, - 0x45, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x74, - 0x68, 0x45, 0x78, 0x61, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x74, 0x68, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x74, 0x68, - 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, - 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x74, 0x68, 0x52, - 0x65, 0x67, 0x65, 0x78, 0x12, 0x5c, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x53, + 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x64, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, 0x01, 0x0a, 0x11, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x50, 0x0a, 0x07, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x12, 0x56, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x42, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xa6, 0x06, 0x0a, 0x0f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x0b, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x65, + 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, + 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x49, 0x44, 0x12, 0x4e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x0a, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0a, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x12, + 0x46, 0x0a, 0x10, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x4c, + 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x65, 0x65, + 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x3d, 0x0a, + 0x0f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb9, 0x01, 0x0a, + 0x13, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0xc1, 0x01, 0x0a, - 0x1d, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x45, 0x78, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x78, 0x61, - 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x75, - 0x66, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x75, 0x66, 0x66, - 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x22, 0xb6, 0x08, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x12, 0x44, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, - 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, - 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, - 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x69, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x04, 0x48, 0x54, 0x54, 0x50, 0x22, 0xed, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x12, 0x5c, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x12, 0x5a, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, - 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x4b, 0x0a, - 0x06, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x4e, 0x49, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x4e, 0x49, 0x12, 0x64, 0x0a, 0x0e, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, - 0x0a, 0x15, 0x4d, 0x61, 0x78, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x4d, - 0x61, 0x78, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x4d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, - 0x12, 0x3c, 0x0a, 0x19, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x19, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, - 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x1d, 0x49, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x78, 0x61, 0x63, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x14, + 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, + 0x65, 0x67, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x22, 0xb6, 0x08, 0x0a, + 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x04, + 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x69, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5a, 0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x0f, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x74, 0x0a, 0x16, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x14, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x14, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x69, 0x61, 0x6c, 0x65, - 0x64, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x22, - 0x5f, 0x0a, 0x11, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x5a, 0x0a, + 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, - 0x22, 0x6f, 0x0a, 0x0c, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x68, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x05, 0x50, 0x61, 0x74, 0x68, - 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, - 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x50, 0x61, 0x74, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x61, - 0x72, 0x73, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0f, 0x50, 0x61, 0x72, 0x73, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, - 0x0a, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x4d, 0x65, + 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x4b, 0x0a, 0x06, 0x45, 0x78, 0x70, + 0x6f, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, + 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x53, 0x4e, 0x49, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x4e, 0x49, 0x12, 0x64, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, + 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, + 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x44, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x4d, 0x61, + 0x78, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x4d, 0x61, 0x78, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x34, 0x0a, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x3c, 0x0a, 0x19, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x19, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x04, 0x4d, 0x65, + 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, + 0x12, 0x5a, 0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x76, + 0x6f, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x45, 0x6e, 0x76, + 0x6f, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x09, + 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x74, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x32, 0x0a, 0x14, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x44, 0x69, 0x61, + 0x6c, 0x65, 0x64, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x22, 0x5f, 0x0a, 0x11, 0x4d, + 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x4a, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x6f, 0x0a, 0x0c, + 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, + 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x05, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xb0, 0x01, + 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0c, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, + 0x68, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x73, 0x65, 0x64, + 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x50, 0x61, 0x72, 0x73, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x09, 0x4f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, + 0x51, 0x0a, 0x08, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x22, 0x8a, 0x05, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4a, 0x53, 0x4f, + 0x4e, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6e, 0x76, + 0x6f, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x8a, 0x05, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, - 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x45, 0x6e, 0x76, 0x6f, 0x79, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, - 0x72, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4a, 0x53, 0x4f, - 0x4e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, - 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x52, 0x06, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x69, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, - 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x06, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x12, 0x69, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x12, 0x50, 0x61, 0x73, + 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x5a, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x73, - 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x12, 0x5a, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, - 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, - 0x3e, 0x0a, 0x1a, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x1a, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, - 0x65, 0x65, 0x72, 0x22, 0x9e, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, - 0x0a, 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4d, 0x61, 0x78, 0x50, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x34, - 0x0a, 0x15, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x4d, - 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x78, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x4d, 0x61, 0x78, 0x46, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x35, 0x78, 0x78, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x35, 0x78, 0x78, 0x22, 0x45, - 0x0a, 0x11, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xb6, 0x02, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x12, 0x4f, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, 0x49, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, - 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x2e, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x65, 0x72, 0x52, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x45, - 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x73, + 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, + 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x3e, 0x0a, 0x1a, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x1a, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x50, + 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x22, + 0x9e, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x78, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x4d, 0x61, + 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x4d, 0x61, + 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x4d, 0x61, 0x78, 0x43, 0x6f, + 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x22, 0xa7, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x35, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x20, + 0x0a, 0x0b, 0x4d, 0x61, 0x78, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x4d, 0x61, 0x78, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x38, 0x0a, 0x17, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x35, 0x78, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x17, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x73, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x35, 0x78, 0x78, 0x22, 0x45, 0x0a, 0x11, 0x44, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x6f, 0x72, + 0x74, 0x22, 0xb6, 0x02, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x4f, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, - 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, + 0x61, 0x12, 0x57, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, 0x49, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, + 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x12, - 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x12, 0x41, 0x50, 0x49, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x5d, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, - 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x12, 0x53, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x41, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x03, 0x54, 0x4c, 0x53, 0x22, 0xde, 0x01, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, - 0x69, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x69, 0x70, 0x68, - 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x22, 0xfe, 0x01, 0x0a, 0x0f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x54, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x54, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x09, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, - 0x09, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xdd, 0x01, 0x0a, 0x17, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x50, 0x0a, 0x06, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, + 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x5d, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x41, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x11, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x04, 0x4d, 0x65, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, - 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x4b, 0x65, 0x79, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x03, 0x0a, - 0x09, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x04, 0x4d, 0x65, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x53, + 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2e, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x4c, + 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, + 0x54, 0x4c, 0x53, 0x22, 0xde, 0x01, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x07, 0x50, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, + 0x69, 0x74, 0x65, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x22, 0xfe, + 0x01, 0x0a, 0x0f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x12, 0x54, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, + 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4a, - 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x74, 0x72, 0x79, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xdd, 0x01, 0x0a, 0x17, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x5c, 0x0a, 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x0c, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, + 0x06, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x52, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x48, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x48, - 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, - 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, + 0xe6, 0x01, 0x0a, 0x11, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf9, 0x01, 0x0a, 0x0d, 0x48, 0x54, 0x54, - 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x07, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x07, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x03, 0x0a, 0x09, 0x48, 0x54, 0x54, + 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, + 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x07, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x05, 0x52, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, - 0x54, 0x54, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x22, 0xc4, 0x02, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x50, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, - 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x05, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x48, 0x6f, 0x73, 0x74, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, - 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, + 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf9, 0x01, 0x0a, 0x0d, 0x48, 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x07, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, + 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, + 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, + 0x12, 0x4e, 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x50, - 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x4b, - 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x0f, - 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x50, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x22, 0xc4, 0x02, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x50, + 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x4e, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x12, 0x48, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x75, 0x0a, 0x0d, 0x48, - 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x05, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x68, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x0e, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x4f, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, - 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x51, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0a, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, - 0x55, 0x52, 0x4c, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x0a, 0x55, 0x52, 0x4c, 0x52, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x22, 0xc2, 0x02, 0x0a, 0x10, 0x48, 0x54, 0x54, - 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x52, 0x0a, - 0x03, 0x41, 0x64, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, + 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x4b, 0x0a, 0x05, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x0f, 0x48, 0x54, 0x54, 0x50, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x50, 0x0a, 0x05, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x41, 0x64, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x52, 0x0a, 0x03, 0x53, 0x65, 0x74, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x75, 0x0a, 0x0d, 0x48, 0x54, 0x54, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, + 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, + 0x01, 0x0a, 0x0e, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x4f, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb3, 0x01, 0x0a, + 0x0b, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x07, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x51, 0x0a, 0x0a, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x52, 0x4c, 0x52, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x0a, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x50, 0x61, 0x74, 0x68, 0x22, 0xc2, 0x02, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x03, 0x41, 0x64, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x53, 0x65, 0x74, 0x1a, 0x36, 0x0a, - 0x08, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe1, 0x01, - 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4c, 0x0a, 0x07, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x73, + 0x41, 0x64, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x41, 0x64, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x52, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x53, 0x65, 0x74, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x64, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe1, 0x01, 0x0a, 0x0b, 0x48, 0x54, + 0x54, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4c, 0x0a, 0x07, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x48, + 0x54, 0x54, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x22, 0xfc, 0x02, + 0x0a, 0x08, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x4d, 0x65, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x2e, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x07, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x22, 0xfc, 0x02, 0x0a, 0x08, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, - 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x68, + 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4d, 0x0a, + 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x52, 0x0a, - 0x07, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, - 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, - 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x4d, 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, - 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x43, 0x50, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x12, 0x45, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x7a, 0x0a, 0x0a, 0x54, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2a, 0xfd, 0x01, 0x0a, - 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x69, 0x6e, 0x64, 0x55, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x69, 0x6e, 0x64, 0x4d, 0x65, - 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x69, - 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, - 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x4b, - 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x69, 0x6e, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x10, 0x05, 0x12, - 0x19, 0x0a, 0x15, 0x4b, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x69, - 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0x07, 0x12, 0x17, - 0x0a, 0x13, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x69, 0x6e, 0x64, 0x48, - 0x54, 0x54, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x69, - 0x6e, 0x64, 0x54, 0x43, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x0a, 0x2a, 0x26, 0x0a, 0x0f, - 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x08, 0x0a, 0x04, 0x44, 0x65, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x6c, 0x6c, - 0x6f, 0x77, 0x10, 0x01, 0x2a, 0x21, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x10, 0x00, 0x2a, 0x50, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, - 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x72, - 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, - 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0x02, 0x2a, 0x7b, 0x0a, 0x0f, 0x4d, 0x65, 0x73, - 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, - 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x68, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x6e, 0x65, 0x10, - 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x4d, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, - 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x10, 0x03, 0x2a, 0x4f, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x54, 0x43, 0x50, 0x10, 0x01, 0x2a, 0x92, 0x02, 0x0a, 0x0f, 0x48, 0x54, 0x54, 0x50, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x48, - 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x41, 0x6c, - 0x6c, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x10, 0x01, 0x12, - 0x19, 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x54, - 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x47, 0x65, 0x74, - 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x65, 0x61, 0x64, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x48, - 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x61, 0x74, 0x63, 0x68, 0x10, - 0x06, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x54, - 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x75, 0x74, - 0x10, 0x08, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x10, 0x09, 0x2a, 0xa7, 0x01, 0x0a, - 0x13, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x00, 0x12, 0x19, - 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, - 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x48, - 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x75, - 0x66, 0x66, 0x69, 0x78, 0x10, 0x04, 0x2a, 0x68, 0x0a, 0x11, 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, - 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x48, - 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x61, 0x63, - 0x74, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, - 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, - 0x75, 0x6c, 0x61, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, - 0x2a, 0x6d, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x00, 0x12, - 0x19, 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x48, 0x54, - 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, 0x75, - 0x6c, 0x61, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x42, - 0xae, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, - 0x43, 0xaa, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0xca, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0xe2, 0x02, 0x31, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x28, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7a, 0x0a, 0x0a, + 0x54, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, + 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2a, 0xfd, 0x01, 0x0a, 0x04, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x69, 0x6e, 0x64, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x69, 0x6e, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x10, 0x02, 0x12, + 0x16, 0x0a, 0x12, 0x4b, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x4b, 0x69, 0x6e, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x4b, + 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x69, 0x6e, 0x64, 0x41, 0x50, + 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4b, 0x69, + 0x6e, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x54, 0x54, 0x50, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x69, 0x6e, 0x64, 0x54, 0x43, + 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x0a, 0x2a, 0x26, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x44, + 0x65, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x10, 0x01, + 0x2a, 0x21, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x10, 0x00, 0x2a, 0x50, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x14, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x10, 0x02, 0x2a, 0x7b, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x65, 0x73, 0x68, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x18, 0x0a, + 0x14, 0x4d, 0x65, 0x73, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x68, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x10, 0x03, 0x2a, 0x4f, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x43, + 0x50, 0x10, 0x01, 0x2a, 0x92, 0x02, 0x0a, 0x0f, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x10, 0x00, 0x12, + 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x48, + 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x47, 0x65, 0x74, 0x10, 0x03, 0x12, 0x17, + 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x48, 0x65, 0x61, 0x64, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, 0x50, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x61, 0x74, 0x63, 0x68, 0x10, 0x06, 0x12, 0x17, 0x0a, + 0x13, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x50, 0x6f, 0x73, 0x74, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x75, 0x74, 0x10, 0x08, 0x12, 0x18, + 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x54, 0x72, 0x61, 0x63, 0x65, 0x10, 0x09, 0x2a, 0xa7, 0x01, 0x0a, 0x13, 0x48, 0x54, 0x54, + 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x18, 0x0a, 0x14, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x54, + 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x10, + 0x02, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x54, 0x54, 0x50, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x54, 0x54, 0x50, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, + 0x10, 0x04, 0x2a, 0x68, 0x0a, 0x11, 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x00, 0x12, + 0x17, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x54, 0x54, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x2a, 0x6d, 0x0a, 0x12, + 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x61, 0x63, 0x74, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x48, + 0x54, 0x54, 0x50, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x48, 0x54, 0x54, 0x50, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x42, 0xae, 0x02, 0x0a, 0x29, + 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, 0x43, 0xaa, 0x02, 0x25, + 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0xca, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x5c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0xe2, 0x02, 0x31, + 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x28, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3a, + 0x3a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/private/pbconfigentry/config_entry.proto b/proto/private/pbconfigentry/config_entry.proto index 65ea77e83814..d5b2d5d9cc12 100644 --- a/proto/private/pbconfigentry/config_entry.proto +++ b/proto/private/pbconfigentry/config_entry.proto @@ -147,6 +147,7 @@ message ServiceResolverRedirect { string Partition = 4; string Datacenter = 5; string Peer = 6; + string SamenessGroup = 7; } // mog annotation: @@ -161,6 +162,7 @@ message ServiceResolverFailover { repeated string Datacenters = 4; repeated ServiceResolverFailoverTarget Targets = 5; ServiceResolverFailoverPolicy Policy = 6; + string SamenessGroup = 7; } // mog annotation: From 33a205877ee365bcc6d0ce085fe64071d31216f3 Mon Sep 17 00:00:00 2001 From: Rosemary Wang <915624+joatmon08@users.noreply.github.com> Date: Fri, 17 Mar 2023 11:29:58 -0400 Subject: [PATCH 08/30] Fix incorrect links on Envoy extensions documentation (#16666) --- .../content/docs/connect/proxies/envoy-extensions/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/content/docs/connect/proxies/envoy-extensions/index.mdx b/website/content/docs/connect/proxies/envoy-extensions/index.mdx index b4876c78e45c..86648f9a9717 100644 --- a/website/content/docs/connect/proxies/envoy-extensions/index.mdx +++ b/website/content/docs/connect/proxies/envoy-extensions/index.mdx @@ -25,8 +25,8 @@ Envoy extensions enable additional service mesh functionality in Consul by chang ### Lua -The `lua` Envoy extension enables HTTP Lua filters in your Consul Envoy proxies. It allows you to run Lua scripts during Envoy requests and responses from Consul-generated Envoy resources. Refer to the [`lua`](/consul/docs/proxies/envoy-extensions/usage/lua) documentation for more information. +The `lua` Envoy extension enables HTTP Lua filters in your Consul Envoy proxies. It allows you to run Lua scripts during Envoy requests and responses from Consul-generated Envoy resources. Refer to the [`lua`](/consul/docs/connect/proxies/envoy-extensions/usage/lua) documentation for more information. ### Lambda -The `lambda` Envoy extension enables services to make requests to AWS Lambda functions through the mesh as if they are a normal part of the Consul catalog. Refer to the [`lambda`](/consul/docs/proxies/envoy-extensions/usage/lambda) documentation for more information. +The `lambda` Envoy extension enables services to make requests to AWS Lambda functions through the mesh as if they are a normal part of the Consul catalog. Refer to the [`lambda`](/consul/docs/connect/proxies/envoy-extensions/usage/lambda) documentation for more information. From 501b87fd313a996343194b44954218d5192746aa Mon Sep 17 00:00:00 2001 From: Andrew Stucki Date: Fri, 17 Mar 2023 13:31:04 -0400 Subject: [PATCH 09/30] [API Gateway] Fix invalid cluster causing gateway programming delay (#16661) * Add test for http routes * Add fix * Fix tests * Add changelog entry * Refactor and fix flaky tests --- .changelog/16661.txt | 3 + agent/consul/discoverychain/gateway.go | 23 ++ agent/consul/discoverychain/gateway_test.go | 48 +-- agent/xds/resources_test.go | 55 +++- ...route-and-inline-certificate.latest.golden | 55 ++++ ...route-and-inline-certificate.latest.golden | 41 +++ ...route-and-inline-certificate.latest.golden | 49 ++++ ...route-and-inline-certificate.latest.golden | 31 ++ ...route-and-inline-certificate.latest.golden | 5 + .../test/gateways/gateway_endpoint_test.go | 256 +++++++--------- .../test/gateways/http_route_test.go | 274 +++++++++++------- 11 files changed, 540 insertions(+), 300 deletions(-) create mode 100644 .changelog/16661.txt create mode 100644 agent/xds/testdata/clusters/api-gateway-with-http-route-and-inline-certificate.latest.golden create mode 100644 agent/xds/testdata/endpoints/api-gateway-with-http-route-and-inline-certificate.latest.golden create mode 100644 agent/xds/testdata/listeners/api-gateway-with-http-route-and-inline-certificate.latest.golden create mode 100644 agent/xds/testdata/routes/api-gateway-with-http-route-and-inline-certificate.latest.golden create mode 100644 agent/xds/testdata/secrets/api-gateway-with-http-route-and-inline-certificate.latest.golden diff --git a/.changelog/16661.txt b/.changelog/16661.txt new file mode 100644 index 000000000000..41336502116e --- /dev/null +++ b/.changelog/16661.txt @@ -0,0 +1,3 @@ +```release-note:bug +gateways: Fixes a bug API gateways using HTTP listeners were taking upwards of 15 seconds to get configured over xDS. +``` diff --git a/agent/consul/discoverychain/gateway.go b/agent/consul/discoverychain/gateway.go index 35a8992d80f1..e834b7a1d497 100644 --- a/agent/consul/discoverychain/gateway.go +++ b/agent/consul/discoverychain/gateway.go @@ -128,6 +128,29 @@ func (l *GatewayChainSynthesizer) Synthesize(chains ...*structs.CompiledDiscover return nil, nil, err } + node := compiled.Nodes[compiled.StartNode] + if node.IsRouter() { + resolverPrefix := structs.DiscoveryGraphNodeTypeResolver + ":" + node.Name + + // clean out the clusters that will get added for the router + for name := range compiled.Nodes { + if strings.HasPrefix(name, resolverPrefix) { + delete(compiled.Nodes, name) + } + } + + // clean out the route rules that'll get added for the router + filtered := []*structs.DiscoveryRoute{} + for _, route := range node.Routes { + if strings.HasPrefix(route.NextNode, resolverPrefix) { + continue + } + filtered = append(filtered, route) + } + node.Routes = filtered + } + compiled.Nodes[compiled.StartNode] = node + // fix up the nodes for the terminal targets to either be a splitter or resolver if there is no splitter present for name, node := range compiled.Nodes { switch node.Type { diff --git a/agent/consul/discoverychain/gateway_test.go b/agent/consul/discoverychain/gateway_test.go index 71e66b051275..57d236afdc81 100644 --- a/agent/consul/discoverychain/gateway_test.go +++ b/agent/consul/discoverychain/gateway_test.go @@ -47,7 +47,7 @@ func TestGatewayChainSynthesizer_AddHTTPRoute(t *testing.T) { route structs.HTTPRouteConfigEntry expectedMatchesByHostname map[string][]hostnameMatch }{ - "no hostanames": { + "no hostnames": { route: structs.HTTPRouteConfigEntry{ Kind: structs.HTTPRoute, Name: "route", @@ -539,15 +539,6 @@ func TestGatewayChainSynthesizer_Synthesize(t *testing.T) { Protocol: "http", StartNode: "router:gateway-suffix-9b9265b.default.default", Nodes: map[string]*structs.DiscoveryGraphNode{ - "resolver:gateway-suffix-9b9265b.default.default.dc1": { - Type: "resolver", - Name: "gateway-suffix-9b9265b.default.default.dc1", - Resolver: &structs.DiscoveryResolver{ - Target: "gateway-suffix-9b9265b.default.default.dc1", - Default: true, - ConnectTimeout: 5000000000, - }, - }, "router:gateway-suffix-9b9265b.default.default": { Type: "router", Name: "gateway-suffix-9b9265b.default.default", @@ -569,20 +560,6 @@ func TestGatewayChainSynthesizer_Synthesize(t *testing.T) { }, }, NextNode: "resolver:foo.default.default.dc1", - }, { - Definition: &structs.ServiceRoute{ - Match: &structs.ServiceRouteMatch{ - HTTP: &structs.ServiceRouteHTTPMatch{ - PathPrefix: "/", - }, - }, - Destination: &structs.ServiceRouteDestination{ - Service: "gateway-suffix-9b9265b", - Partition: "default", - Namespace: "default", - }, - }, - NextNode: "resolver:gateway-suffix-9b9265b.default.default.dc1", }}, }, "resolver:foo.default.default.dc1": { @@ -704,15 +681,6 @@ func TestGatewayChainSynthesizer_ComplexChain(t *testing.T) { Protocol: "http", StartNode: "router:gateway-suffix-9b9265b.default.default", Nodes: map[string]*structs.DiscoveryGraphNode{ - "resolver:gateway-suffix-9b9265b.default.default.dc1": { - Type: "resolver", - Name: "gateway-suffix-9b9265b.default.default.dc1", - Resolver: &structs.DiscoveryResolver{ - Target: "gateway-suffix-9b9265b.default.default.dc1", - Default: true, - ConnectTimeout: 5000000000, - }, - }, "resolver:service-one.default.default.dc1": { Type: "resolver", Name: "service-one.default.default.dc1", @@ -770,20 +738,6 @@ func TestGatewayChainSynthesizer_ComplexChain(t *testing.T) { }, }, NextNode: "splitter:splitter-one.default.default", - }, { - Definition: &structs.ServiceRoute{ - Match: &structs.ServiceRouteMatch{ - HTTP: &structs.ServiceRouteHTTPMatch{ - PathPrefix: "/", - }, - }, - Destination: &structs.ServiceRouteDestination{ - Service: "gateway-suffix-9b9265b", - Partition: "default", - Namespace: "default", - }, - }, - NextNode: "resolver:gateway-suffix-9b9265b.default.default.dc1", }}, }, "splitter:splitter-one.default.default": { diff --git a/agent/xds/resources_test.go b/agent/xds/resources_test.go index d5009f63685f..24bee7660615 100644 --- a/agent/xds/resources_test.go +++ b/agent/xds/resources_test.go @@ -11,6 +11,8 @@ import ( envoy_route_v3 "github.com/envoyproxy/go-control-plane/envoy/config/route/v3" envoy_tls_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/tls/v3" + "github.com/hashicorp/consul/agent/connect" + "github.com/hashicorp/consul/agent/consul/discoverychain" "github.com/hashicorp/consul/agent/xds/testcommon" "github.com/hashicorp/consul/envoyextensions/xdscommon" @@ -175,7 +177,7 @@ func TestAllResourcesFromSnapshot(t *testing.T) { tests = append(tests, getMeshGatewayPeeringGoldenTestCases()...) tests = append(tests, getTrafficControlPeeringGoldenTestCases()...) tests = append(tests, getEnterpriseGoldenTestCases()...) - tests = append(tests, getAPIGatewayGoldenTestCases()...) + tests = append(tests, getAPIGatewayGoldenTestCases(t)...) latestEnvoyVersion := xdscommon.EnvoyVersions[0] for _, envoyVersion := range xdscommon.EnvoyVersions { @@ -314,7 +316,13 @@ AAJAMaoXmoYVdgXV+CPuBb2M4XCpuzLu3bcA2PXm5ipSyIgntMKwXV7r -----END CERTIFICATE-----` ) -func getAPIGatewayGoldenTestCases() []goldenTestCase { +func getAPIGatewayGoldenTestCases(t *testing.T) []goldenTestCase { + t.Helper() + + service := structs.NewServiceName("service", nil) + serviceUID := proxycfg.NewUpstreamIDFromServiceName(service) + serviceChain := discoverychain.TestCompileConfigEntries(t, "service", "default", "default", "dc1", connect.TestClusterID+".consul", nil) + return []goldenTestCase{ { name: "api-gateway-with-tcp-route-and-inline-certificate", @@ -362,5 +370,48 @@ func getAPIGatewayGoldenTestCases() []goldenTestCase { }}, nil) }, }, + { + name: "api-gateway-with-http-route-and-inline-certificate", + create: func(t testinf.T) *proxycfg.ConfigSnapshot { + return proxycfg.TestConfigSnapshotAPIGateway(t, "default", nil, func(entry *structs.APIGatewayConfigEntry, bound *structs.BoundAPIGatewayConfigEntry) { + entry.Listeners = []structs.APIGatewayListener{ + { + Name: "listener", + Protocol: structs.ListenerProtocolHTTP, + Port: 8080, + }, + } + bound.Listeners = []structs.BoundAPIGatewayListener{ + { + Name: "listener", + Routes: []structs.ResourceReference{{ + Kind: structs.HTTPRoute, + Name: "route", + }}, + }, + } + }, []structs.BoundRoute{ + &structs.HTTPRouteConfigEntry{ + Kind: structs.HTTPRoute, + Name: "route", + Rules: []structs.HTTPRouteRule{{ + Services: []structs.HTTPService{{ + Name: "service", + }}, + }}, + }, + }, nil, []proxycfg.UpdateEvent{{ + CorrelationID: "discovery-chain:" + serviceUID.String(), + Result: &structs.DiscoveryChainResponse{ + Chain: serviceChain, + }, + }, { + CorrelationID: "upstream-target:" + serviceChain.ID() + ":" + serviceUID.String(), + Result: &structs.IndexedCheckServiceNodes{ + Nodes: proxycfg.TestUpstreamNodes(t, "service"), + }, + }}) + }, + }, } } diff --git a/agent/xds/testdata/clusters/api-gateway-with-http-route-and-inline-certificate.latest.golden b/agent/xds/testdata/clusters/api-gateway-with-http-route-and-inline-certificate.latest.golden new file mode 100644 index 000000000000..e20479dfd1cf --- /dev/null +++ b/agent/xds/testdata/clusters/api-gateway-with-http-route-and-inline-certificate.latest.golden @@ -0,0 +1,55 @@ +{ + "versionInfo": "00000001", + "resources": [ + { + "@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster", + "name": "service.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", + "altStatName": "service.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", + "type": "EDS", + "edsClusterConfig": { + "edsConfig": { + "ads": {}, + "resourceApiVersion": "V3" + } + }, + "connectTimeout": "5s", + "circuitBreakers": {}, + "outlierDetection": {}, + "commonLbConfig": { + "healthyPanicThreshold": {} + }, + "transportSocket": { + "name": "tls", + "typedConfig": { + "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext", + "commonTlsContext": { + "tlsParams": {}, + "tlsCertificates": [ + { + "certificateChain": { + "inlineString": "-----BEGIN CERTIFICATE-----\nMIICjDCCAjKgAwIBAgIIC5llxGV1gB8wCgYIKoZIzj0EAwIwFDESMBAGA1UEAxMJ\nVGVzdCBDQSAyMB4XDTE5MDMyMjEzNTgyNloXDTI5MDMyMjEzNTgyNlowDjEMMAoG\nA1UEAxMDd2ViMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEADPv1RHVNRfa2VKR\nAB16b6rZnEt7tuhaxCFpQXPj7M2omb0B9Favq5E0ivpNtv1QnFhxtPd7d5k4e+T7\nSkW1TaOCAXIwggFuMA4GA1UdDwEB/wQEAwIDuDAdBgNVHSUEFjAUBggrBgEFBQcD\nAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBoBgNVHQ4EYQRfN2Q6MDc6ODc6M2E6\nNDA6MTk6NDc6YzM6NWE6YzA6YmE6NjI6ZGY6YWY6NGI6ZDQ6MDU6MjU6NzY6M2Q6\nNWE6OGQ6MTY6OGQ6Njc6NWU6MmU6YTA6MzQ6N2Q6ZGM6ZmYwagYDVR0jBGMwYYBf\nZDE6MTE6MTE6YWM6MmE6YmE6OTc6YjI6M2Y6YWM6N2I6YmQ6ZGE6YmU6YjE6OGE6\nZmM6OWE6YmE6YjU6YmM6ODM6ZTc6NWU6NDE6NmY6ZjI6NzM6OTU6NTg6MGM6ZGIw\nWQYDVR0RBFIwUIZOc3BpZmZlOi8vMTExMTExMTEtMjIyMi0zMzMzLTQ0NDQtNTU1\nNTU1NTU1NTU1LmNvbnN1bC9ucy9kZWZhdWx0L2RjL2RjMS9zdmMvd2ViMAoGCCqG\nSM49BAMCA0gAMEUCIGC3TTvvjj76KMrguVyFf4tjOqaSCRie3nmHMRNNRav7AiEA\npY0heYeK9A6iOLrzqxSerkXXQyj5e9bE4VgUnxgPU6g=\n-----END CERTIFICATE-----\n" + }, + "privateKey": { + "inlineString": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIMoTkpRggp3fqZzFKh82yS4LjtJI+XY+qX/7DefHFrtdoAoGCCqGSM49\nAwEHoUQDQgAEADPv1RHVNRfa2VKRAB16b6rZnEt7tuhaxCFpQXPj7M2omb0B9Fav\nq5E0ivpNtv1QnFhxtPd7d5k4e+T7SkW1TQ==\n-----END EC PRIVATE KEY-----\n" + } + } + ], + "validationContext": { + "trustedCa": { + "inlineString": "-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIICpZq70Z9LyUwCgYIKoZIzj0EAwIwFDESMBAGA1UEAxMJ\nVGVzdCBDQSAyMB4XDTE5MDMyMjEzNTgyNloXDTI5MDMyMjEzNTgyNlowFDESMBAG\nA1UEAxMJVGVzdCBDQSAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIhywH1gx\nAsMwuF3ukAI5YL2jFxH6Usnma1HFSfVyxbXX1/uoZEYrj8yCAtdU2yoHETyd+Zx2\nThhRLP79pYegCaOCATwwggE4MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTAD\nAQH/MGgGA1UdDgRhBF9kMToxMToxMTphYzoyYTpiYTo5NzpiMjozZjphYzo3Yjpi\nZDpkYTpiZTpiMTo4YTpmYzo5YTpiYTpiNTpiYzo4MzplNzo1ZTo0MTo2ZjpmMjo3\nMzo5NTo1ODowYzpkYjBqBgNVHSMEYzBhgF9kMToxMToxMTphYzoyYTpiYTo5Nzpi\nMjozZjphYzo3YjpiZDpkYTpiZTpiMTo4YTpmYzo5YTpiYTpiNTpiYzo4MzplNzo1\nZTo0MTo2ZjpmMjo3Mzo5NTo1ODowYzpkYjA/BgNVHREEODA2hjRzcGlmZmU6Ly8x\nMTExMTExMS0yMjIyLTMzMzMtNDQ0NC01NTU1NTU1NTU1NTUuY29uc3VsMAoGCCqG\nSM49BAMCA0gAMEUCICOY0i246rQHJt8o8Oya0D5PLL1FnmsQmQqIGCi31RwnAiEA\noR5f6Ku+cig2Il8T8LJujOp2/2A72QcHZA57B13y+8o=\n-----END CERTIFICATE-----\n" + }, + "matchSubjectAltNames": [ + { + "exact": "spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/service" + } + ] + } + }, + "sni": "service.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul" + } + } + } + ], + "typeUrl": "type.googleapis.com/envoy.config.cluster.v3.Cluster", + "nonce": "00000001" +} \ No newline at end of file diff --git a/agent/xds/testdata/endpoints/api-gateway-with-http-route-and-inline-certificate.latest.golden b/agent/xds/testdata/endpoints/api-gateway-with-http-route-and-inline-certificate.latest.golden new file mode 100644 index 000000000000..18adccd10c83 --- /dev/null +++ b/agent/xds/testdata/endpoints/api-gateway-with-http-route-and-inline-certificate.latest.golden @@ -0,0 +1,41 @@ +{ + "versionInfo": "00000001", + "resources": [ + { + "@type": "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment", + "clusterName": "service.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", + "endpoints": [ + { + "lbEndpoints": [ + { + "endpoint": { + "address": { + "socketAddress": { + "address": "10.10.1.1", + "portValue": 8080 + } + } + }, + "healthStatus": "HEALTHY", + "loadBalancingWeight": 1 + }, + { + "endpoint": { + "address": { + "socketAddress": { + "address": "10.10.1.2", + "portValue": 8080 + } + } + }, + "healthStatus": "HEALTHY", + "loadBalancingWeight": 1 + } + ] + } + ] + } + ], + "typeUrl": "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment", + "nonce": "00000001" +} \ No newline at end of file diff --git a/agent/xds/testdata/listeners/api-gateway-with-http-route-and-inline-certificate.latest.golden b/agent/xds/testdata/listeners/api-gateway-with-http-route-and-inline-certificate.latest.golden new file mode 100644 index 000000000000..e9bee988de93 --- /dev/null +++ b/agent/xds/testdata/listeners/api-gateway-with-http-route-and-inline-certificate.latest.golden @@ -0,0 +1,49 @@ +{ + "versionInfo": "00000001", + "resources": [ + { + "@type": "type.googleapis.com/envoy.config.listener.v3.Listener", + "name": "http:1.2.3.4:8080", + "address": { + "socketAddress": { + "address": "1.2.3.4", + "portValue": 8080 + } + }, + "filterChains": [ + { + "filters": [ + { + "name": "envoy.filters.network.http_connection_manager", + "typedConfig": { + "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager", + "statPrefix": "ingress_upstream_8080", + "rds": { + "configSource": { + "ads": {}, + "resourceApiVersion": "V3" + }, + "routeConfigName": "8080" + }, + "httpFilters": [ + { + "name": "envoy.filters.http.router", + "typedConfig": { + "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router" + } + } + ], + "tracing": { + "randomSampling": {} + } + } + } + ] + } + ], + "trafficDirection": "OUTBOUND" + } + ], + "typeUrl": "type.googleapis.com/envoy.config.listener.v3.Listener", + "nonce": "00000001" +} \ No newline at end of file diff --git a/agent/xds/testdata/routes/api-gateway-with-http-route-and-inline-certificate.latest.golden b/agent/xds/testdata/routes/api-gateway-with-http-route-and-inline-certificate.latest.golden new file mode 100644 index 000000000000..6abc6f2946b4 --- /dev/null +++ b/agent/xds/testdata/routes/api-gateway-with-http-route-and-inline-certificate.latest.golden @@ -0,0 +1,31 @@ +{ + "versionInfo": "00000001", + "resources": [ + { + "@type": "type.googleapis.com/envoy.config.route.v3.RouteConfiguration", + "name": "8080", + "virtualHosts": [ + { + "name": "api-gateway-listener-9b9265b", + "domains": [ + "*", + "*:8080" + ], + "routes": [ + { + "match": { + "prefix": "/" + }, + "route": { + "cluster": "service.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul" + } + } + ] + } + ], + "validateClusters": true + } + ], + "typeUrl": "type.googleapis.com/envoy.config.route.v3.RouteConfiguration", + "nonce": "00000001" +} \ No newline at end of file diff --git a/agent/xds/testdata/secrets/api-gateway-with-http-route-and-inline-certificate.latest.golden b/agent/xds/testdata/secrets/api-gateway-with-http-route-and-inline-certificate.latest.golden new file mode 100644 index 000000000000..95612291de70 --- /dev/null +++ b/agent/xds/testdata/secrets/api-gateway-with-http-route-and-inline-certificate.latest.golden @@ -0,0 +1,5 @@ +{ + "versionInfo": "00000001", + "typeUrl": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret", + "nonce": "00000001" +} \ No newline at end of file diff --git a/test/integration/consul-container/test/gateways/gateway_endpoint_test.go b/test/integration/consul-container/test/gateways/gateway_endpoint_test.go index d79bf7c65e4c..da642f183416 100644 --- a/test/integration/consul-container/test/gateways/gateway_endpoint_test.go +++ b/test/integration/consul-container/test/gateways/gateway_endpoint_test.go @@ -9,28 +9,30 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/hashicorp/consul/api" - "github.com/hashicorp/consul/sdk/testutil/retry" libassert "github.com/hashicorp/consul/test/integration/consul-container/libs/assert" libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster" libservice "github.com/hashicorp/consul/test/integration/consul-container/libs/service" libtopology "github.com/hashicorp/consul/test/integration/consul-container/libs/topology" - "github.com/hashicorp/consul/test/integration/consul-container/libs/utils" "github.com/hashicorp/go-cleanhttp" ) // Creates a gateway service and tests to see if it is routable func TestAPIGatewayCreate(t *testing.T) { - t.Skip() if testing.Short() { t.Skip("too slow for testing.Short") } t.Parallel() + + gatewayName := randomName("gateway", 16) + routeName := randomName("route", 16) + serviceName := randomName("service", 16) listenerPortOne := 6000 + serviceHTTPPort := 6001 + serviceGRPCPort := 6002 clusterConfig := &libtopology.ClusterConfig{ NumServers: 1, @@ -41,17 +43,28 @@ func TestAPIGatewayCreate(t *testing.T) { InjectGossipEncryption: true, AllowHTTPAnyway: true, }, - Ports: []int{listenerPortOne}, - ApplyDefaultProxySettings: true, + Ports: []int{ + listenerPortOne, + serviceHTTPPort, + serviceGRPCPort, + }, } cluster, _, _ := libtopology.NewCluster(t, clusterConfig) client := cluster.APIClient(0) + namespace := getNamespace() + if namespace != "" { + ns := &api.Namespace{Name: namespace} + _, _, err := client.Namespaces().Create(ns, nil) + require.NoError(t, err) + } + // add api gateway config apiGateway := &api.APIGatewayConfigEntry{ - Kind: api.APIGateway, - Name: "api-gateway", + Kind: api.APIGateway, + Namespace: namespace, + Name: gatewayName, Listeners: []api.APIGatewayListener{ { Name: "listener", @@ -63,32 +76,48 @@ func TestAPIGatewayCreate(t *testing.T) { require.NoError(t, cluster.ConfigEntryWrite(apiGateway)) + _, _, err := libservice.CreateAndRegisterStaticServerAndSidecar(cluster.Agents[0], &libservice.ServiceOpts{ + ID: serviceName, + Name: serviceName, + Namespace: namespace, + HTTPPort: serviceHTTPPort, + GRPCPort: serviceGRPCPort, + }) + require.NoError(t, err) + tcpRoute := &api.TCPRouteConfigEntry{ - Kind: api.TCPRoute, - Name: "api-gateway-route", + Kind: api.TCPRoute, + Name: routeName, + Namespace: namespace, Parents: []api.ResourceReference{ { - Kind: api.APIGateway, - Name: "api-gateway", + Kind: api.APIGateway, + Namespace: namespace, + Name: gatewayName, }, }, Services: []api.TCPService{ { - Name: libservice.StaticServerServiceName, + Namespace: namespace, + Name: serviceName, }, }, } require.NoError(t, cluster.ConfigEntryWrite(tcpRoute)) - // Create a client proxy instance with the server as an upstream - _, gatewayService := createServices(t, cluster, listenerPortOne) + // Create a gateway + gatewayService, err := libservice.NewGatewayService(context.Background(), libservice.GatewayConfig{ + Kind: "api", + Namespace: namespace, + Name: gatewayName, + }, cluster.Agents[0], listenerPortOne) + require.NoError(t, err) // make sure the gateway/route come online // make sure config entries have been properly created - namespace := getNamespace() - checkGatewayConfigEntry(t, client, "api-gateway", namespace) - checkTCPRouteConfigEntry(t, client, "api-gateway-route", namespace) + checkGatewayConfigEntry(t, client, gatewayName, namespace) + checkTCPRouteConfigEntry(t, client, routeName, namespace) port, err := gatewayService.GetPort(listenerPortOne) require.NoError(t, err) @@ -112,72 +141,36 @@ func conditionStatusIsValue(typeName string, statusValue string, conditions []ap return false } -// TODO this code is just copy pasted from elsewhere, it is likely we will need to modify it some -func createCluster(t *testing.T, ports ...int) *libcluster.Cluster { - opts := libcluster.BuildOptions{ - InjectAutoEncryption: true, - InjectGossipEncryption: true, - AllowHTTPAnyway: true, - } - ctx := libcluster.NewBuildContext(t, opts) - - conf := libcluster.NewConfigBuilder(ctx). - ToAgentConfig(t) - t.Logf("Cluster config:\n%s", conf.JSON) - - configs := []libcluster.Config{*conf} - - cluster, err := libcluster.New(t, configs, ports...) - require.NoError(t, err) - - node := cluster.Agents[0] - client := node.GetClient() - - libcluster.WaitForLeader(t, cluster, client) - libcluster.WaitForMembers(t, client, 1) - - // Default Proxy Settings - ok, err := utils.ApplyDefaultProxySettings(client) - require.NoError(t, err) - require.True(t, ok) - - require.NoError(t, err) - - return cluster -} - -func createGatewayConfigEntry(gatewayName, protocol, namespace string, listenerPort int) *api.APIGatewayConfigEntry { - return &api.APIGatewayConfigEntry{ - Kind: api.APIGateway, - Name: gatewayName, - Listeners: []api.APIGatewayListener{ - { - Name: "listener", - Port: listenerPort, - Protocol: protocol, - }, - }, - Namespace: namespace, - } -} - func checkGatewayConfigEntry(t *testing.T, client *api.Client, gatewayName string, namespace string) { + t.Helper() + require.Eventually(t, func() bool { entry, _, err := client.ConfigEntries().Get(api.APIGateway, gatewayName, &api.QueryOptions{Namespace: namespace}) - require.NoError(t, err) + if err != nil { + t.Log("error constructing request", err) + return false + } if entry == nil { + t.Log("returned entry is nil") return false } + apiEntry := entry.(*api.APIGatewayConfigEntry) return isAccepted(apiEntry.Status.Conditions) }, time.Second*10, time.Second*1) } func checkHTTPRouteConfigEntry(t *testing.T, client *api.Client, routeName string, namespace string) { + t.Helper() + require.Eventually(t, func() bool { entry, _, err := client.ConfigEntries().Get(api.HTTPRoute, routeName, &api.QueryOptions{Namespace: namespace}) - require.NoError(t, err) + if err != nil { + t.Log("error constructing request", err) + return false + } if entry == nil { + t.Log("returned entry is nil") return false } @@ -187,10 +180,16 @@ func checkHTTPRouteConfigEntry(t *testing.T, client *api.Client, routeName strin } func checkTCPRouteConfigEntry(t *testing.T, client *api.Client, routeName string, namespace string) { + t.Helper() + require.Eventually(t, func() bool { entry, _, err := client.ConfigEntries().Get(api.TCPRoute, routeName, &api.QueryOptions{Namespace: namespace}) - require.NoError(t, err) + if err != nil { + t.Log("error constructing request", err) + return false + } if entry == nil { + t.Log("returned entry is nil") return false } @@ -199,43 +198,6 @@ func checkTCPRouteConfigEntry(t *testing.T, client *api.Client, routeName string }, time.Second*10, time.Second*1) } -func createService(t *testing.T, cluster *libcluster.Cluster, serviceOpts *libservice.ServiceOpts, containerArgs []string) libservice.Service { - node := cluster.Agents[0] - client := node.GetClient() - // Create a service and proxy instance - service, _, err := libservice.CreateAndRegisterStaticServerAndSidecar(node, serviceOpts, containerArgs...) - require.NoError(t, err) - - libassert.CatalogServiceExists(t, client, serviceOpts.Name+"-sidecar-proxy", &api.QueryOptions{Namespace: serviceOpts.Namespace}) - libassert.CatalogServiceExists(t, client, serviceOpts.Name, &api.QueryOptions{Namespace: serviceOpts.Namespace}) - - return service -} - -func createServices(t *testing.T, cluster *libcluster.Cluster, ports ...int) (libservice.Service, libservice.Service) { - node := cluster.Agents[0] - client := node.GetClient() - // Create a service and proxy instance - serviceOpts := &libservice.ServiceOpts{ - Name: libservice.StaticServerServiceName, - ID: "static-server", - HTTPPort: 8080, - GRPCPort: 8079, - } - - clientConnectProxy := createService(t, cluster, serviceOpts, nil) - gwCfg := libservice.GatewayConfig{ - Name: "api-gateway", - Kind: "api", - } - - gatewayService, err := libservice.NewGatewayService(context.Background(), gwCfg, cluster.Agents[0], ports...) - require.NoError(t, err) - libassert.CatalogServiceExists(t, client, "api-gateway", nil) - - return clientConnectProxy, gatewayService -} - type checkOptions struct { debug bool statusCode int @@ -244,26 +206,23 @@ type checkOptions struct { // checkRoute, customized version of libassert.RouteEchos to allow for headers/distinguishing between the server instances func checkRoute(t *testing.T, port int, path string, headers map[string]string, expected checkOptions) { - ip := "localhost" + t.Helper() + if expected.testName != "" { t.Log("running " + expected.testName) } - const phrase = "hello" - - failer := func() *retry.Timer { - return &retry.Timer{Timeout: time.Second * 60, Wait: time.Second * 60} - } client := cleanhttp.DefaultClient() - path = strings.TrimPrefix(path, "/") - url := fmt.Sprintf("http://%s:%d/%s", ip, port, path) + url := fmt.Sprintf("http://localhost:%d/%s", port, path) - retry.RunWith(failer(), t, func(r *retry.R) { - t.Logf("making call to %s", url) - reader := strings.NewReader(phrase) + require.Eventually(t, func() bool { + reader := strings.NewReader("hello") req, err := http.NewRequest("POST", url, reader) - require.NoError(t, err) + if err != nil { + t.Log("error constructing request", err) + return false + } headers["content-type"] = "text/plain" for k, v := range headers { @@ -273,39 +232,41 @@ func checkRoute(t *testing.T, port int, path string, headers map[string]string, req.Host = v } } + res, err := client.Do(req) if err != nil { - t.Log(err) - r.Fatal("could not make call to service ", url) + t.Log("error sending request", err) + return false } defer res.Body.Close() body, err := io.ReadAll(res.Body) if err != nil { - r.Fatal("could not read response body ", url) + t.Log("error reading response body", err) + return false } - assert.Equal(t, expected.statusCode, res.StatusCode) if expected.statusCode != res.StatusCode { - r.Fatal("unexpected response code returned") + t.Logf("bad status code - expected: %d, actual: %d", expected.statusCode, res.StatusCode) + return false } - - // if debug is expected, debug should be in the response body - assert.Equal(t, expected.debug, strings.Contains(string(body), "debug")) - if expected.statusCode != res.StatusCode { - r.Fatal("unexpected response body returned") + if expected.debug { + if !strings.Contains(string(body), "debug") { + t.Log("body does not contain 'debug'") + return false + } } - - if !strings.Contains(string(body), phrase) { - r.Fatal("received an incorrect response ", string(body)) + if !strings.Contains(string(body), "hello") { + t.Log("body does not contain 'hello'") + return false } - }) + + return true + }, time.Second*30, time.Second*1) } func checkRouteError(t *testing.T, ip string, port int, path string, headers map[string]string, expected string) { - failer := func() *retry.Timer { - return &retry.Timer{Timeout: time.Second * 60, Wait: time.Second * 60} - } + t.Helper() client := cleanhttp.DefaultClient() url := fmt.Sprintf("http://%s:%d", ip, port) @@ -314,11 +275,12 @@ func checkRouteError(t *testing.T, ip string, port int, path string, headers map url += "/" + path } - retry.RunWith(failer(), t, func(r *retry.R) { - t.Logf("making call to %s", url) + require.Eventually(t, func() bool { req, err := http.NewRequest("GET", url, nil) - assert.NoError(t, err) - + if err != nil { + t.Log("error constructing request", err) + return false + } for k, v := range headers { req.Header.Set(k, v) @@ -327,10 +289,16 @@ func checkRouteError(t *testing.T, ip string, port int, path string, headers map } } _, err = client.Do(req) - assert.Error(t, err) - + if err == nil { + t.Log("client request should have errored, but didn't") + return false + } if expected != "" { - assert.ErrorContains(t, err, expected) + if !strings.Contains(err.Error(), expected) { + t.Logf("expected %q to contain %q", err.Error(), expected) + return false + } } - }) + return true + }, time.Second*30, time.Second*1) } diff --git a/test/integration/consul-container/test/gateways/http_route_test.go b/test/integration/consul-container/test/gateways/http_route_test.go index bf2745b20688..a1a6c5a0e77f 100644 --- a/test/integration/consul-container/test/gateways/http_route_test.go +++ b/test/integration/consul-container/test/gateways/http_route_test.go @@ -36,10 +36,25 @@ func TestHTTPRouteFlattening(t *testing.T) { if testing.Short() { t.Skip("too slow for testing.Short") } + t.Parallel() // infrastructure set up - listenerPort := 6000 + listenerPort := 6004 + serviceOneHTTPPort := 6005 + serviceOneGRPCPort := 6006 + serviceTwoHTTPPort := 6007 + serviceTwoGRPCPort := 6008 + + serviceOneName := randomName("service", 16) + serviceTwoName := randomName("service", 16) + serviceOneResponseCode := 200 + serviceTwoResponseCode := 418 + gatewayName := randomName("gw", 16) + routeOneName := randomName("route", 16) + routeTwoName := randomName("route", 16) + path1 := "/" + path2 := "/v2" clusterConfig := &libtopology.ClusterConfig{ NumServers: 1, @@ -50,7 +65,13 @@ func TestHTTPRouteFlattening(t *testing.T) { InjectGossipEncryption: true, AllowHTTPAnyway: true, }, - Ports: []int{listenerPort}, + Ports: []int{ + listenerPort, + serviceOneHTTPPort, + serviceOneGRPCPort, + serviceTwoHTTPPort, + serviceTwoGRPCPort, + }, ApplyDefaultProxySettings: true, } @@ -64,40 +85,34 @@ func TestHTTPRouteFlattening(t *testing.T) { require.NoError(t, err) } - service1ResponseCode := 200 - service2ResponseCode := 418 - serviceOne := createService(t, cluster, &libservice.ServiceOpts{ - Name: "service1", - ID: "service1", - HTTPPort: 8080, - GRPCPort: 8079, + _, _, err := libservice.CreateAndRegisterStaticServerAndSidecar(cluster.Agents[0], &libservice.ServiceOpts{ + ID: serviceOneName, + Name: serviceOneName, Namespace: namespace, - }, []string{ + HTTPPort: serviceOneHTTPPort, + GRPCPort: serviceOneGRPCPort, + }, // customizes response code so we can distinguish between which service is responding - "-echo-server-default-params", fmt.Sprintf("status=%d", service1ResponseCode), - }) - serviceTwo := createService(t, cluster, &libservice.ServiceOpts{ - Name: "service2", - ID: "service2", - HTTPPort: 8081, - GRPCPort: 8082, + "-echo-server-default-params", fmt.Sprintf("status=%d", serviceOneResponseCode), + ) + require.NoError(t, err) + + _, _, err = libservice.CreateAndRegisterStaticServerAndSidecar(cluster.Agents[0], &libservice.ServiceOpts{ + ID: serviceTwoName, + Name: serviceTwoName, Namespace: namespace, - }, []string{ - "-echo-server-default-params", fmt.Sprintf("status=%d", service2ResponseCode), + HTTPPort: serviceTwoHTTPPort, + GRPCPort: serviceTwoGRPCPort, }, + // customizes response code so we can distinguish between which service is responding + "-echo-server-default-params", fmt.Sprintf("status=%d", serviceTwoResponseCode), ) - - gatewayName := randomName("gw", 16) - routeOneName := randomName("route", 16) - routeTwoName := randomName("route", 16) - path1 := "/" - path2 := "/v2" + require.NoError(t, err) // write config entries proxyDefaults := &api.ProxyConfigEntry{ - Kind: api.ProxyDefaults, - Name: api.ProxyConfigGlobal, - Namespace: "", // proxy-defaults can only be set in the default namespace + Kind: api.ProxyDefaults, + Name: api.ProxyConfigGlobal, Config: map[string]interface{}{ "protocol": "http", }, @@ -119,8 +134,9 @@ func TestHTTPRouteFlattening(t *testing.T) { } routeOne := &api.HTTPRouteConfigEntry{ - Kind: api.HTTPRoute, - Name: routeOneName, + Kind: api.HTTPRoute, + Name: routeOneName, + Namespace: namespace, Parents: []api.ResourceReference{ { Kind: api.APIGateway, @@ -132,12 +148,11 @@ func TestHTTPRouteFlattening(t *testing.T) { "test.foo", "test.example", }, - Namespace: namespace, Rules: []api.HTTPRouteRule{ { Services: []api.HTTPService{ { - Name: serviceOne.GetServiceName(), + Name: serviceOneName, Namespace: namespace, }, }, @@ -154,8 +169,9 @@ func TestHTTPRouteFlattening(t *testing.T) { } routeTwo := &api.HTTPRouteConfigEntry{ - Kind: api.HTTPRoute, - Name: routeTwoName, + Kind: api.HTTPRoute, + Name: routeTwoName, + Namespace: namespace, Parents: []api.ResourceReference{ { Kind: api.APIGateway, @@ -166,12 +182,11 @@ func TestHTTPRouteFlattening(t *testing.T) { Hostnames: []string{ "test.foo", }, - Namespace: namespace, Rules: []api.HTTPRouteRule{ { Services: []api.HTTPService{ { - Name: serviceTwo.GetServiceName(), + Name: serviceTwoName, Namespace: namespace, }, }, @@ -210,6 +225,7 @@ func TestHTTPRouteFlattening(t *testing.T) { // make sure config entries have been properly created checkGatewayConfigEntry(t, client, gatewayName, namespace) + t.Log("checking route one") checkHTTPRouteConfigEntry(t, client, routeOneName, namespace) checkHTTPRouteConfigEntry(t, client, routeTwoName, namespace) @@ -222,31 +238,31 @@ func TestHTTPRouteFlattening(t *testing.T) { checkRoute(t, gatewayPort, "/v2", map[string]string{ "Host": "test.foo", "x-v2": "v2", - }, checkOptions{statusCode: service2ResponseCode, testName: "service2 header and path"}) + }, checkOptions{statusCode: serviceTwoResponseCode, testName: "service2 header and path"}) checkRoute(t, gatewayPort, "/v2", map[string]string{ "Host": "test.foo", - }, checkOptions{statusCode: service2ResponseCode, testName: "service2 just path match"}) + }, checkOptions{statusCode: serviceTwoResponseCode, testName: "service2 just path match"}) // //v1 path with the header checkRoute(t, gatewayPort, "/check", map[string]string{ "Host": "test.foo", "x-v2": "v2", - }, checkOptions{statusCode: service2ResponseCode, testName: "service2 just header match"}) + }, checkOptions{statusCode: serviceTwoResponseCode, testName: "service2 just header match"}) checkRoute(t, gatewayPort, "/v2/path/value", map[string]string{ "Host": "test.foo", "x-v2": "v2", - }, checkOptions{statusCode: service2ResponseCode, testName: "service2 v2 with path"}) + }, checkOptions{statusCode: serviceTwoResponseCode, testName: "service2 v2 with path"}) // hit service 1 by hitting root path checkRoute(t, gatewayPort, "", map[string]string{ "Host": "test.foo", - }, checkOptions{debug: false, statusCode: service1ResponseCode, testName: "service1 root prefix"}) + }, checkOptions{debug: false, statusCode: serviceOneResponseCode, testName: "service1 root prefix"}) // hit service 1 by hitting v2 path with v1 hostname checkRoute(t, gatewayPort, "/v2", map[string]string{ "Host": "test.example", - }, checkOptions{debug: false, statusCode: service1ResponseCode, testName: "service1, v2 path with v2 hostname"}) + }, checkOptions{debug: false, statusCode: serviceOneResponseCode, testName: "service1, v2 path with v2 hostname"}) } func TestHTTPRoutePathRewrite(t *testing.T) { @@ -257,14 +273,46 @@ func TestHTTPRoutePathRewrite(t *testing.T) { t.Parallel() // infrastructure set up - listenerPort := 6001 + listenerPort := 6009 + fooHTTPPort := 6010 + fooGRPCPort := 6011 + barHTTPPort := 6012 + barGRPCPort := 6013 + + fooName := randomName("foo", 16) + barName := randomName("bar", 16) + gatewayName := randomName("gw", 16) + invalidRouteName := randomName("route", 16) + validRouteName := randomName("route", 16) + // create cluster - cluster := createCluster(t, listenerPort) - client := cluster.Agents[0].GetClient() + clusterConfig := &libtopology.ClusterConfig{ + NumServers: 1, + NumClients: 1, + BuildOpts: &libcluster.BuildOptions{ + Datacenter: "dc1", + InjectAutoEncryption: true, + InjectGossipEncryption: true, + AllowHTTPAnyway: true, + }, + Ports: []int{ + listenerPort, + fooHTTPPort, + fooGRPCPort, + barHTTPPort, + barGRPCPort, + }, + ApplyDefaultProxySettings: true, + } + + cluster, _, _ := libtopology.NewCluster(t, clusterConfig) + client := cluster.APIClient(0) + fooStatusCode := 400 barStatusCode := 201 fooPath := "/v1/foo" barPath := "/v1/bar" + namespace := getNamespace() if namespace != "" { ns := &api.Namespace{Name: namespace} @@ -272,33 +320,32 @@ func TestHTTPRoutePathRewrite(t *testing.T) { require.NoError(t, err) } - fooService := createService(t, cluster, &libservice.ServiceOpts{ - Name: "foo", - ID: "foo", - HTTPPort: 8080, - GRPCPort: 8081, + _, _, err := libservice.CreateAndRegisterStaticServerAndSidecar(cluster.Agents[0], &libservice.ServiceOpts{ + ID: fooName, + Name: fooName, Namespace: namespace, - }, []string{ + HTTPPort: fooHTTPPort, + GRPCPort: fooGRPCPort, + }, // customizes response code so we can distinguish between which service is responding "-echo-debug-path", fooPath, "-echo-server-default-params", fmt.Sprintf("status=%d", fooStatusCode), - }) - barService := createService(t, cluster, &libservice.ServiceOpts{ - Name: "bar", - ID: "bar", - // TODO we can potentially get conflicts if these ports are the same - HTTPPort: 8079, - GRPCPort: 8078, + ) + require.NoError(t, err) + + _, _, err = libservice.CreateAndRegisterStaticServerAndSidecar(cluster.Agents[0], &libservice.ServiceOpts{ + ID: barName, + Name: barName, Namespace: namespace, - }, []string{ + HTTPPort: barHTTPPort, + GRPCPort: barGRPCPort, + }, + // customizes response code so we can distinguish between which service is responding "-echo-debug-path", barPath, "-echo-server-default-params", fmt.Sprintf("status=%d", barStatusCode), - }, ) + require.NoError(t, err) - gatewayName := randomName("gw", 16) - invalidRouteName := randomName("route", 16) - validRouteName := randomName("route", 16) fooUnrewritten := "/foo" barUnrewritten := "/bar" @@ -314,7 +361,18 @@ func TestHTTPRoutePathRewrite(t *testing.T) { require.NoError(t, cluster.ConfigEntryWrite(proxyDefaults)) - apiGateway := createGatewayConfigEntry(gatewayName, "http", namespace, listenerPort) + apiGateway := &api.APIGatewayConfigEntry{ + Kind: api.APIGateway, + Name: gatewayName, + Listeners: []api.APIGatewayListener{ + { + Name: "listener", + Port: listenerPort, + Protocol: "http", + }, + }, + Namespace: namespace, + } fooRoute := &api.HTTPRouteConfigEntry{ Kind: api.HTTPRoute, @@ -339,7 +397,7 @@ func TestHTTPRoutePathRewrite(t *testing.T) { }, Services: []api.HTTPService{ { - Name: fooService.GetServiceName(), + Name: fooName, Namespace: namespace, }, }, @@ -378,7 +436,7 @@ func TestHTTPRoutePathRewrite(t *testing.T) { }, Services: []api.HTTPService{ { - Name: barService.GetServiceName(), + Name: barName, Namespace: namespace, }, }, @@ -445,17 +503,43 @@ func TestHTTPRouteParentRefChange(t *testing.T) { if testing.Short() { t.Skip("too slow for testing.Short") } + t.Parallel() // infrastructure set up address := "localhost" - listenerOnePort := 6000 - listenerTwoPort := 6001 + listenerOnePort := 6014 + listenerTwoPort := 6015 + serviceHTTPPort := 6016 + serviceGRPCPort := 6017 - // create cluster and service - cluster := createCluster(t, listenerOnePort, listenerTwoPort) - client := cluster.Agents[0].GetClient() + serviceName := randomName("service", 16) + gatewayOneName := randomName("gw1", 16) + gatewayTwoName := randomName("gw2", 16) + routeName := randomName("route", 16) + + // create cluster + clusterConfig := &libtopology.ClusterConfig{ + NumServers: 1, + NumClients: 1, + BuildOpts: &libcluster.BuildOptions{ + Datacenter: "dc1", + InjectAutoEncryption: true, + InjectGossipEncryption: true, + AllowHTTPAnyway: true, + }, + Ports: []int{ + listenerOnePort, + listenerTwoPort, + serviceHTTPPort, + serviceGRPCPort, + }, + ApplyDefaultProxySettings: true, + } + + cluster, _, _ := libtopology.NewCluster(t, clusterConfig) + client := cluster.APIClient(0) // getNamespace() should always return an empty string in Consul OSS namespace := getNamespace() @@ -465,23 +549,19 @@ func TestHTTPRouteParentRefChange(t *testing.T) { require.NoError(t, err) } - service := createService(t, cluster, &libservice.ServiceOpts{ - Name: "service", - ID: "service", - HTTPPort: 8080, - GRPCPort: 8079, + _, _, err := libservice.CreateAndRegisterStaticServerAndSidecar(cluster.Agents[0], &libservice.ServiceOpts{ + ID: serviceName, + Name: serviceName, Namespace: namespace, - }, []string{}) - - gatewayOneName := randomName("gw1", 16) - gatewayTwoName := randomName("gw2", 16) - routeName := randomName("route", 16) + HTTPPort: serviceHTTPPort, + GRPCPort: serviceGRPCPort, + }) + require.NoError(t, err) // write config entries proxyDefaults := &api.ProxyConfigEntry{ - Kind: api.ProxyDefaults, - Name: api.ProxyConfigGlobal, - Namespace: "", // proxy-defaults can only be set in the default namespace + Kind: api.ProxyDefaults, + Name: api.ProxyConfigGlobal, Config: map[string]interface{}{ "protocol": "http", }, @@ -504,16 +584,7 @@ func TestHTTPRouteParentRefChange(t *testing.T) { Namespace: namespace, } require.NoError(t, cluster.ConfigEntryWrite(gatewayOne)) - require.Eventually(t, func() bool { - entry, _, err := client.ConfigEntries().Get(api.APIGateway, gatewayOneName, &api.QueryOptions{Namespace: namespace}) - assert.NoError(t, err) - if entry == nil { - return false - } - apiEntry := entry.(*api.APIGatewayConfigEntry) - t.Log(entry) - return isAccepted(apiEntry.Status.Conditions) - }, time.Second*10, time.Second*1) + checkGatewayConfigEntry(t, client, gatewayOneName, namespace) // create gateway service gwOneCfg := libservice.GatewayConfig{ @@ -539,19 +610,8 @@ func TestHTTPRouteParentRefChange(t *testing.T) { }, Namespace: namespace, } - require.NoError(t, cluster.ConfigEntryWrite(gatewayTwo)) - - require.Eventually(t, func() bool { - entry, _, err := client.ConfigEntries().Get(api.APIGateway, gatewayTwoName, &api.QueryOptions{Namespace: namespace}) - assert.NoError(t, err) - if entry == nil { - return false - } - apiEntry := entry.(*api.APIGatewayConfigEntry) - t.Log(entry) - return isAccepted(apiEntry.Status.Conditions) - }, time.Second*10, time.Second*1) + checkGatewayConfigEntry(t, client, gatewayTwoName, namespace) // create gateway service gwTwoCfg := libservice.GatewayConfig{ @@ -583,7 +643,7 @@ func TestHTTPRouteParentRefChange(t *testing.T) { { Services: []api.HTTPService{ { - Name: service.GetServiceName(), + Name: serviceName, Namespace: namespace, }, }, From 22cf122447bb34783c09f6697f170596922c411d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Mar 2023 04:07:00 +0000 Subject: [PATCH 10/30] Bump tomhjp/gh-action-jira-search from 0.2.1 to 0.2.2 (#16667) Bumps [tomhjp/gh-action-jira-search](https://github.com/tomhjp/gh-action-jira-search) from 0.2.1 to 0.2.2. - [Release notes](https://github.com/tomhjp/gh-action-jira-search/releases) - [Commits](https://github.com/tomhjp/gh-action-jira-search/compare/v0.2.1...v0.2.2) --- updated-dependencies: - dependency-name: tomhjp/gh-action-jira-search dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/jira-issues.yaml | 2 +- .github/workflows/jira-pr.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index 78700d2b730c..e38209356d27 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -57,7 +57,7 @@ jobs: - name: Search if: github.event.action != 'opened' id: search - uses: tomhjp/gh-action-jira-search@v0.2.1 + uses: tomhjp/gh-action-jira-search@v0.2.2 with: # cf[10089] is Issue Link (use JIRA API to retrieve) jql: 'issuetype = "${{ steps.set-ticket-type.outputs.TYPE }}" and cf[10089] = "${{ github.event.issue.html_url || github.event.pull_request.html_url }}"' diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index be8eb77865bb..f0ac2b62d915 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -76,7 +76,7 @@ jobs: - name: Search if: github.event.action != 'opened' id: search - uses: tomhjp/gh-action-jira-search@v0.2.1 + uses: tomhjp/gh-action-jira-search@v0.2.2 with: # cf[10089] is Issue Link (use JIRA API to retrieve) jql: 'issuetype = "${{ steps.set-ticket-type.outputs.TYPE }}" and cf[10089] = "${{ github.event.issue.html_url || github.event.pull_request.html_url }}"' From 2ee3336b380d7141deb411e482162c822a01ba59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:50:06 +0000 Subject: [PATCH 11/30] build(deps): bump atlassian/gajira-transition from 2.0.1 to 3.0.1 (#15921) Bumps [atlassian/gajira-transition](https://github.com/atlassian/gajira-transition) from 2.0.1 to 3.0.1. - [Release notes](https://github.com/atlassian/gajira-transition/releases) - [Commits](https://github.com/atlassian/gajira-transition/compare/v2.0.1...v3.0.1) --- updated-dependencies: - dependency-name: atlassian/gajira-transition dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Yu --- .github/workflows/jira-issues.yaml | 4 ++-- .github/workflows/jira-pr.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index e38209356d27..07b71e83d47a 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -71,14 +71,14 @@ jobs: - name: Close ticket if: ( github.event.action == 'closed' || github.event.action == 'deleted' ) && steps.search.outputs.issue - uses: atlassian/gajira-transition@v2.0.1 + uses: atlassian/gajira-transition@v3.0.1 with: issue: ${{ steps.search.outputs.issue }} transition: "Closed" - name: Reopen ticket if: github.event.action == 'reopened' && steps.search.outputs.issue - uses: atlassian/gajira-transition@v2.0.1 + uses: atlassian/gajira-transition@v3.0.1 with: issue: ${{ steps.search.outputs.issue }} transition: "To Do" diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index f0ac2b62d915..706efa61a4be 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -90,14 +90,14 @@ jobs: - name: Close ticket if: ( github.event.action == 'closed' || github.event.action == 'deleted' ) && steps.search.outputs.issue - uses: atlassian/gajira-transition@v2.0.1 + uses: atlassian/gajira-transition@v3.0.1 with: issue: ${{ steps.search.outputs.issue }} transition: "Closed" - name: Reopen ticket if: github.event.action == 'reopened' && steps.search.outputs.issue - uses: atlassian/gajira-transition@v2.0.1 + uses: atlassian/gajira-transition@v3.0.1 with: issue: ${{ steps.search.outputs.issue }} transition: "To Do" From b9d8552e2569572d56725e9ae02946abb8f3528f Mon Sep 17 00:00:00 2001 From: Dhia Ayachi Date: Sat, 18 Mar 2023 16:43:22 -0400 Subject: [PATCH 12/30] Snapshot restore tests (#16647) * add snapshot restore test * add logstore as test parameter * Use the correct image version * make sure we read the logs from a followers to test the follower snapshot install path. * update to raf-wal v0.3.0 * add changelog. * updating changelog for bug description and removed integration test. * setting up test container builder to only set logStore for 1.15 and higher --------- Co-authored-by: Paul Banks Co-authored-by: John Murret --- .changelog/16647.txt | 3 + go.mod | 10 +- go.sum | 21 ++-- .../consul-container/libs/cluster/builder.go | 24 +++++ .../libs/cluster/container.go | 10 +- .../libs/topology/peering_topology.go | 1 + .../test/snapshot/snapshot_restore_test.go | 97 +++++++++++++++++++ 7 files changed, 150 insertions(+), 16 deletions(-) create mode 100644 .changelog/16647.txt create mode 100644 test/integration/consul-container/test/snapshot/snapshot_restore_test.go diff --git a/.changelog/16647.txt b/.changelog/16647.txt new file mode 100644 index 000000000000..cbe38b3ed280 --- /dev/null +++ b/.changelog/16647.txt @@ -0,0 +1,3 @@ +```release-note:bug +raft_logstore: Fixes a bug where restoring a snapshot when using the experimental WAL storage backend causes a panic. +``` diff --git a/go.mod b/go.mod index 570f6692ab93..4b76c79a4102 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/NYTimes/gziphandler v1.0.1 github.com/aliyun/alibaba-cloud-sdk-go v1.62.156 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e - github.com/armon/go-metrics v0.3.10 + github.com/armon/go-metrics v0.4.1 github.com/armon/go-radix v1.0.0 github.com/aws/aws-sdk-go v1.42.34 github.com/coredns/coredns v1.6.6 @@ -64,10 +64,10 @@ require ( github.com/hashicorp/hcp-sdk-go v0.23.1-0.20220921131124-49168300a7dc github.com/hashicorp/hil v0.0.0-20200423225030-a18a1cd20038 github.com/hashicorp/memberlist v0.5.0 - github.com/hashicorp/raft v1.3.11 + github.com/hashicorp/raft v1.4.0 github.com/hashicorp/raft-autopilot v0.1.6 github.com/hashicorp/raft-boltdb/v2 v2.2.2 - github.com/hashicorp/raft-wal v0.2.4 + github.com/hashicorp/raft-wal v0.3.0 github.com/hashicorp/serf v0.10.1 github.com/hashicorp/vault-plugin-auth-alicloud v0.14.0 github.com/hashicorp/vault/api v1.8.3 @@ -92,7 +92,7 @@ require ( github.com/rboyer/safeio v0.2.1 github.com/ryanuber/columnize v2.1.2+incompatible github.com/shirou/gopsutil/v3 v3.22.8 - github.com/stretchr/testify v1.8.0 + github.com/stretchr/testify v1.8.2 go.etcd.io/bbolt v1.3.6 go.uber.org/goleak v1.1.10 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d @@ -215,7 +215,7 @@ require ( github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect github.com/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.4.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect github.com/tencentcloud/tencentcloud-sdk-go v1.0.162 // indirect github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect diff --git a/go.sum b/go.sum index 0ed6defcbb08..4667b8247060 100644 --- a/go.sum +++ b/go.sum @@ -144,8 +144,8 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -610,8 +610,9 @@ github.com/hashicorp/net-rpc-msgpackrpc/v2 v2.0.0 h1:kBpVVl1sl3MaSrs97e0+pDQhSrq github.com/hashicorp/net-rpc-msgpackrpc/v2 v2.0.0/go.mod h1:6pdNz0vo0mF0GvhwDG56O3N18qBrAz/XRIcfINfTbwo= github.com/hashicorp/raft v1.1.0/go.mod h1:4Ak7FSPnuvmb0GV6vgIAJ4vYT4bek9bb6Q+7HVbyzqM= github.com/hashicorp/raft v1.2.0/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8= -github.com/hashicorp/raft v1.3.11 h1:p3v6gf6l3S797NnK5av3HcczOC1T5CLoaRvg0g9ys4A= github.com/hashicorp/raft v1.3.11/go.mod h1:J8naEwc6XaaCfts7+28whSeRvCqTd6e20BlCU3LtEO4= +github.com/hashicorp/raft v1.4.0 h1:tn28S/AWv0BtRQgwZv/1NELu8sCvI0FixqL8C8MYKeY= +github.com/hashicorp/raft v1.4.0/go.mod h1:nz64BIjXphDLATfKGG5RzHtNUPioLeKFsXEm88yTVew= github.com/hashicorp/raft-autopilot v0.1.6 h1:C1q3RNF2FfXNZfHWbvVAu0QixaQK8K5pX4O5lh+9z4I= github.com/hashicorp/raft-autopilot v0.1.6/go.mod h1:Af4jZBwaNOI+tXfIqIdbcAnh/UyyqIMj/pOISIfhArw= github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk= @@ -619,8 +620,8 @@ github.com/hashicorp/raft-boltdb v0.0.0-20210409134258-03c10cc3d4ea/go.mod h1:qR github.com/hashicorp/raft-boltdb v0.0.0-20220329195025-15018e9b97e0 h1:CO8dBMLH6dvE1jTn/30ZZw3iuPsNfajshWoJTnVc5cc= github.com/hashicorp/raft-boltdb/v2 v2.2.2 h1:rlkPtOllgIcKLxVT4nutqlTH2NRFn+tO1wwZk/4Dxqw= github.com/hashicorp/raft-boltdb/v2 v2.2.2/go.mod h1:N8YgaZgNJLpZC+h+by7vDu5rzsRgONThTEeUS3zWbfY= -github.com/hashicorp/raft-wal v0.2.4 h1:Ke0ytMj8XyOVKQqFDmmgs/6hqkTJg0b/GO2a2XQBZ6A= -github.com/hashicorp/raft-wal v0.2.4/go.mod h1:JQ/4RbnKFi5Q/4rA73CekaYtHCJhU7qM7AQ4X5Y6q4M= +github.com/hashicorp/raft-wal v0.3.0 h1:Mi6RPoRbsxIIYZryI+bSTXHD97Ua6rIYO51ibYV9bkY= +github.com/hashicorp/raft-wal v0.3.0/go.mod h1:A6vP5o8hGOs1LHfC1Okh9xPwWDcmb6Vvuz/QyqUXlOE= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hashicorp/vault-plugin-auth-alicloud v0.14.0 h1:O6tNk0s/arubLUbLeCyaRs5xGo9VwmbQazISY/BfPK4= @@ -703,8 +704,8 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -928,8 +929,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rs/zerolog v1.4.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -984,8 +985,9 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -994,8 +996,9 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tencentcloud/tencentcloud-sdk-go v1.0.162 h1:8fDzz4GuVg4skjY2B0nMN7h6uN61EDVkuLyI2+qGHhI= github.com/tencentcloud/tencentcloud-sdk-go v1.0.162/go.mod h1:asUz5BPXxgoPGaRgZaVm1iGcUAuHyYUo1nXqKa83cvI= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= diff --git a/test/integration/consul-container/libs/cluster/builder.go b/test/integration/consul-container/libs/cluster/builder.go index 9ce5bf5c8c34..2807985e17e5 100644 --- a/test/integration/consul-container/libs/cluster/builder.go +++ b/test/integration/consul-container/libs/cluster/builder.go @@ -20,6 +20,13 @@ const ( ConsulCACertKey = "consul-agent-ca-key.pem" ) +type LogStore string + +const ( + LogStore_WAL LogStore = "wal" + LogStore_BoltDB LogStore = "boltdb" +) + // BuildContext provides a reusable object meant to share common configuration settings // between agent configuration builders. type BuildContext struct { @@ -41,6 +48,7 @@ type BuildContext struct { tlsCertIndex int // keeps track of the certificates issued for naming purposes aclEnabled bool + logStore LogStore } func (c *BuildContext) DockerImage() string { @@ -89,6 +97,9 @@ type BuildOptions struct { // ACLEnabled configures acl in agent configuration ACLEnabled bool + + //StoreLog define which LogStore to use + LogStore LogStore } func NewBuildContext(t *testing.T, opts BuildOptions) *BuildContext { @@ -103,6 +114,7 @@ func NewBuildContext(t *testing.T, opts BuildOptions) *BuildContext { useAPIWithTLS: opts.UseAPIWithTLS, useGRPCWithTLS: opts.UseGRPCWithTLS, aclEnabled: opts.ACLEnabled, + logStore: opts.LogStore, } if ctx.consulImageName == "" { @@ -202,6 +214,18 @@ func NewConfigBuilder(ctx *BuildContext) *Builder { b.conf.Set("acl.enable_token_persistence", true) } + ls := string(ctx.logStore) + if ls != "" && (ctx.consulVersion == "local" || + semver.Compare("v"+ctx.consulVersion, "v1.15.0") >= 0) { + // Enable logstore backend for version after v1.15.0 + if ls != string(LogStore_WAL) && ls != string(LogStore_BoltDB) { + ls = string(LogStore_BoltDB) + } + b.conf.Set("raft_logstore.backend", ls) + } else { + b.conf.Unset("raft_logstore.backend") + } + return b } diff --git a/test/integration/consul-container/libs/cluster/container.go b/test/integration/consul-container/libs/cluster/container.go index 3ad1b2d35169..4e3e1c39901c 100644 --- a/test/integration/consul-container/libs/cluster/container.go +++ b/test/integration/consul-container/libs/cluster/container.go @@ -154,11 +154,17 @@ func NewConsulContainer(ctx context.Context, config Config, cluster *Cluster, po info AgentInfo ) if httpPort > 0 { - uri, err := podContainer.PortEndpoint(ctx, "8500", "http") + for i := 0; i < 10; i++ { + uri, err := podContainer.PortEndpoint(ctx, "8500", "http") + if err != nil { + time.Sleep(500 * time.Millisecond) + continue + } + clientAddr = uri + } if err != nil { return nil, err } - clientAddr = uri } else if httpsPort > 0 { uri, err := podContainer.PortEndpoint(ctx, "8501", "https") diff --git a/test/integration/consul-container/libs/topology/peering_topology.go b/test/integration/consul-container/libs/topology/peering_topology.go index 0e853f7adda3..3e7ac8d067b0 100644 --- a/test/integration/consul-container/libs/topology/peering_topology.go +++ b/test/integration/consul-container/libs/topology/peering_topology.go @@ -198,6 +198,7 @@ func NewCluster( AllowHTTPAnyway: true, ConsulVersion: config.BuildOpts.ConsulVersion, ACLEnabled: config.BuildOpts.ACLEnabled, + LogStore: config.BuildOpts.LogStore, } ctx := libcluster.NewBuildContext(t, opts) diff --git a/test/integration/consul-container/test/snapshot/snapshot_restore_test.go b/test/integration/consul-container/test/snapshot/snapshot_restore_test.go new file mode 100644 index 000000000000..1d82b1cfb10c --- /dev/null +++ b/test/integration/consul-container/test/snapshot/snapshot_restore_test.go @@ -0,0 +1,97 @@ +package snapshot + +import ( + "fmt" + "github.com/hashicorp/consul/api" + libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster" + libtopology "github.com/hashicorp/consul/test/integration/consul-container/libs/topology" + "github.com/hashicorp/consul/test/integration/consul-container/libs/utils" + "github.com/stretchr/testify/require" + "io" + "testing" +) + +func TestSnapshotRestore(t *testing.T) { + + cases := []libcluster.LogStore{libcluster.LogStore_WAL, libcluster.LogStore_BoltDB} + + for _, c := range cases { + t.Run(fmt.Sprintf("test log store: %s", c), func(t *testing.T) { + testSnapShotRestoreForLogStore(t, c) + }) + } +} + +func testSnapShotRestoreForLogStore(t *testing.T, logStore libcluster.LogStore) { + + const ( + numServers = 3 + ) + + // Create initial cluster + cluster, _, _ := libtopology.NewCluster(t, &libtopology.ClusterConfig{ + NumServers: numServers, + NumClients: 0, + BuildOpts: &libcluster.BuildOptions{ + Datacenter: "dc1", + ConsulImageName: utils.TargetImageName, + ConsulVersion: utils.TargetVersion, + LogStore: logStore, + }, + ApplyDefaultProxySettings: true, + }) + + client := cluster.APIClient(0) + libcluster.WaitForLeader(t, cluster, client) + libcluster.WaitForMembers(t, client, 3) + + for i := 0; i < 100; i++ { + _, err := client.KV().Put(&api.KVPair{Key: fmt.Sprintf("key-%d", i), Value: []byte(fmt.Sprintf("value-%d", i))}, nil) + require.NoError(t, err) + } + + var snapshot io.ReadCloser + var err error + snapshot, _, err = client.Snapshot().Save(nil) + require.NoError(t, err) + + err = cluster.Terminate() + require.NoError(t, err) + // Create a fresh cluster from scratch + cluster2, _, _ := libtopology.NewCluster(t, &libtopology.ClusterConfig{ + NumServers: numServers, + NumClients: 0, + BuildOpts: &libcluster.BuildOptions{ + Datacenter: "dc1", + ConsulImageName: utils.TargetImageName, + ConsulVersion: utils.TargetVersion, + LogStore: logStore, + }, + ApplyDefaultProxySettings: true, + }) + client2 := cluster2.APIClient(0) + + libcluster.WaitForLeader(t, cluster2, client2) + libcluster.WaitForMembers(t, client2, 3) + + // Restore the saved snapshot + require.NoError(t, client2.Snapshot().Restore(nil, snapshot)) + + libcluster.WaitForLeader(t, cluster2, client2) + + followers, err := cluster2.Followers() + require.NoError(t, err) + require.Len(t, followers, 2) + + // use a follower api client and set `AllowStale` to true + // to test the follower snapshot install code path as well. + fc := followers[0].GetClient() + + for i := 0; i < 100; i++ { + kv, _, err := fc.KV().Get(fmt.Sprintf("key-%d", i), &api.QueryOptions{AllowStale: true}) + require.NoError(t, err) + require.Equal(t, kv.Key, fmt.Sprintf("key-%d", i)) + require.Equal(t, kv.Value, []byte(fmt.Sprintf("value-%d", i))) + } + +} From 7477f52a167cd0344420b94b6ddb537d3ad301cf Mon Sep 17 00:00:00 2001 From: Eric Haberkorn Date: Mon, 20 Mar 2023 09:12:37 -0400 Subject: [PATCH 13/30] add sameness groups to discovery chains (#16671) --- agent/configentry/discoverychain.go | 19 ++++ agent/consul/discoverychain/compile.go | 93 ++++++++++++++----- agent/consul/state/config_entry.go | 14 ++- agent/structs/config_entry_discoverychain.go | 9 +- .../config_entry_discoverychain_test.go | 2 +- agent/structs/config_entry_sameness_group.go | 17 ++++ agent/structs/discovery_chain.go | 28 ++++++ 7 files changed, 152 insertions(+), 30 deletions(-) diff --git a/agent/configentry/discoverychain.go b/agent/configentry/discoverychain.go index 033abb9623b3..2a4aecb0726e 100644 --- a/agent/configentry/discoverychain.go +++ b/agent/configentry/discoverychain.go @@ -59,6 +59,13 @@ func (e *DiscoveryChainSet) GetService(sid structs.ServiceID) *structs.ServiceCo return nil } +func (e *DiscoveryChainSet) GetSamenessGroup(name string) *structs.SamenessGroupConfigEntry { + if e.SamenessGroups != nil { + return e.SamenessGroups[name] + } + return nil +} + func (e *DiscoveryChainSet) GetProxyDefaults(partition string) *structs.ProxyConfigEntry { if e.ProxyDefaults != nil { return e.ProxyDefaults[partition] @@ -106,6 +113,16 @@ func (e *DiscoveryChainSet) AddServices(entries ...*structs.ServiceConfigEntry) } } +// AddSamenessGroup adds service configs. Convenience function for testing. +func (e *DiscoveryChainSet) AddSamenessGroup(entries ...*structs.SamenessGroupConfigEntry) { + if e.Services == nil { + e.SamenessGroups = make(map[string]*structs.SamenessGroupConfigEntry) + } + for _, entry := range entries { + e.SamenessGroups[entry.Name] = entry + } +} + // AddProxyDefaults adds proxy-defaults configs. Convenience function for testing. func (e *DiscoveryChainSet) AddProxyDefaults(entries ...*structs.ProxyConfigEntry) { if e.ProxyDefaults == nil { @@ -139,6 +156,8 @@ func (e *DiscoveryChainSet) AddEntries(entries ...structs.ConfigEntry) { e.AddResolvers(entry.(*structs.ServiceResolverConfigEntry)) case structs.ServiceDefaults: e.AddServices(entry.(*structs.ServiceConfigEntry)) + case structs.SamenessGroup: + e.AddSamenessGroup(entry.(*structs.SamenessGroupConfigEntry)) case structs.ProxyDefaults: if entry.GetName() != structs.ProxyConfigGlobal { panic("the only supported proxy-defaults name is '" + structs.ProxyConfigGlobal + "'") diff --git a/agent/consul/discoverychain/compile.go b/agent/consul/discoverychain/compile.go index ea1140bf097a..0a209fd3c5cd 100644 --- a/agent/consul/discoverychain/compile.go +++ b/agent/consul/discoverychain/compile.go @@ -930,7 +930,8 @@ RESOLVE_AGAIN: // // TODO(rb): What about a redirected subset reference? (web/v2, but web redirects to alt/"") - if resolver.Redirect != nil { + // Redirects to sameness groups are technically failovers. + if resolver.Redirect != nil && resolver.Redirect.SamenessGroup == "" { redirect := resolver.Redirect redirectedTarget := c.rewriteTarget( @@ -1070,6 +1071,23 @@ RESOLVE_AGAIN: // reasonably if there is some sort of graph loop below. c.recordNode(node) + var err error + // Determine which failover definitions apply. + var failoverTargets []*structs.DiscoveryTarget + var failoverPolicy *structs.ServiceResolverFailoverPolicy + proxyDefault := c.entries.GetProxyDefaults(targetID.PartitionOrDefault()) + if proxyDefault != nil { + failoverPolicy = proxyDefault.FailoverPolicy + } + + if resolver.Redirect != nil && resolver.Redirect.SamenessGroup != "" { + opts := resolver.Redirect.ToDiscoveryTargetOpts() + failoverTargets, err = c.makeSamenessGroupFailover(target, opts, resolver.Redirect.SamenessGroup) + if err != nil { + return nil, err + } + } + if len(resolver.Failover) > 0 { f := resolver.Failover @@ -1083,8 +1101,10 @@ RESOLVE_AGAIN: return node, nil } - // Determine which failover definitions apply. - var failoverTargets []*structs.DiscoveryTarget + if failover.Policy != nil { + failoverPolicy = failover.Policy + } + if len(failover.Datacenters) > 0 { opts := failover.ToDiscoveryTargetOpts() for _, dc := range failover.Datacenters { @@ -1103,6 +1123,11 @@ RESOLVE_AGAIN: failoverTargets = append(failoverTargets, failoverTarget) } } + } else if failover.SamenessGroup != "" { + failoverTargets, err = c.makeSamenessGroupFailover(target, failover.ToDiscoveryTargetOpts(), failover.SamenessGroup) + if err != nil { + return nil, err + } } else { // Rewrite the target as per the failover policy. failoverTarget := c.rewriteTarget(target, failover.ToDiscoveryTargetOpts()) @@ -1111,37 +1136,55 @@ RESOLVE_AGAIN: } } - // If we filtered everything out then no point in having a failover. - if len(failoverTargets) > 0 { - df := &structs.DiscoveryFailover{} - node.Resolver.Failover = df + } - if failover.Policy == nil || failover.Policy.Mode == "" { - proxyDefault := c.entries.GetProxyDefaults(targetID.PartitionOrDefault()) - if proxyDefault != nil { - df.Policy = proxyDefault.FailoverPolicy - } - } else { - df.Policy = failover.Policy - } + // If we filtered everything out then no point in having a failover. + if len(failoverTargets) > 0 { + df := &structs.DiscoveryFailover{} + node.Resolver.Failover = df - // Take care of doing any redirects or configuration loading - // related to targets by cheating a bit and recursing into - // ourselves. - for _, target := range failoverTargets { - failoverResolveNode, err := c.getResolverNode(target, true) - if err != nil { - return nil, err - } - failoverTarget := failoverResolveNode.Resolver.Target - df.Targets = append(df.Targets, failoverTarget) + df.Policy = failoverPolicy + + // Take care of doing any redirects or configuration loading + // related to targets by cheating a bit and recursing into + // ourselves. + for _, target := range failoverTargets { + failoverResolveNode, err := c.getResolverNode(target, true) + if err != nil { + return nil, err } + failoverTarget := failoverResolveNode.Resolver.Target + df.Targets = append(df.Targets, failoverTarget) } } return node, nil } +func (c *compiler) makeSamenessGroupFailover(target *structs.DiscoveryTarget, opts structs.DiscoveryTargetOpts, samenessGroupName string) ([]*structs.DiscoveryTarget, error) { + samenessGroup := c.entries.GetSamenessGroup(samenessGroupName) + if samenessGroup == nil { + return nil, &structs.ConfigEntryGraphError{ + Message: fmt.Sprintf( + "sameness group missing for service %q", + target.Service, + ), + } + } + + var failoverTargets []*structs.DiscoveryTarget + for _, t := range samenessGroup.ToFailoverTargets() { + // Rewrite the target as per the failover policy. + targetOpts := structs.MergeDiscoveryTargetOpts(opts, t.ToDiscoveryTargetOpts()) + failoverTarget := c.rewriteTarget(target, targetOpts) + if failoverTarget.ID != target.ID { // don't failover to yourself + failoverTargets = append(failoverTargets, failoverTarget) + } + } + + return failoverTargets, nil +} + func newDefaultServiceResolver(sid structs.ServiceID) *structs.ServiceResolverConfigEntry { return &structs.ServiceResolverConfigEntry{ Kind: structs.ServiceResolver, diff --git a/agent/consul/state/config_entry.go b/agent/consul/state/config_entry.go index 0dcadb015361..e4b3665742b3 100644 --- a/agent/consul/state/config_entry.go +++ b/agent/consul/state/config_entry.go @@ -725,6 +725,16 @@ func validateProposedConfigEntryInServiceGraph( // Exported services and mesh config do not influence discovery chains. return nil + case structs.SamenessGroup: + // Any service resolver could reference a sameness group. + _, entries, err := configEntriesByKindTxn(tx, nil, structs.ServiceResolver, wildcardEntMeta) + if err != nil { + return err + } + for _, entry := range entries { + checkChains[structs.NewServiceID(entry.GetName(), entry.GetEnterpriseMeta())] = struct{}{} + } + case structs.ProxyDefaults: // Check anything that has a discovery chain entry. In the future we could // somehow omit the ones that have a default protocol configured. @@ -1408,8 +1418,8 @@ func readDiscoveryChainConfigEntriesTxn( todoPeers[peer] = struct{}{} } - for _, peer := range resolver.RelatedSamenessGroups() { - todoSamenessGroups[peer] = struct{}{} + for _, sg := range resolver.RelatedSamenessGroups() { + todoSamenessGroups[sg] = struct{}{} } } diff --git a/agent/structs/config_entry_discoverychain.go b/agent/structs/config_entry_discoverychain.go index d44f3d4fa052..1a728b3434ba 100644 --- a/agent/structs/config_entry_discoverychain.go +++ b/agent/structs/config_entry_discoverychain.go @@ -1103,7 +1103,7 @@ func (e *ServiceResolverConfigEntry) Validate() error { } if f.isEmpty() { - return fmt.Errorf(errorPrefix + "one of Service, ServiceSubset, Namespace, Targets, or Datacenters is required") + return fmt.Errorf(errorPrefix + "one of Service, ServiceSubset, Namespace, Targets, SamenessGroup, or Datacenters is required") } if err := f.Policy.ValidateEnterprise(); err != nil { @@ -1447,7 +1447,12 @@ func (f *ServiceResolverFailover) ToDiscoveryTargetOpts() DiscoveryTargetOpts { } func (f *ServiceResolverFailover) isEmpty() bool { - return f.Service == "" && f.ServiceSubset == "" && f.Namespace == "" && len(f.Datacenters) == 0 && len(f.Targets) == 0 + return f.Service == "" && + f.ServiceSubset == "" && + f.Namespace == "" && + len(f.Datacenters) == 0 && + len(f.Targets) == 0 && + f.SamenessGroup == "" } func (fp *ServiceResolverFailoverPolicy) isValid() bool { diff --git a/agent/structs/config_entry_discoverychain_test.go b/agent/structs/config_entry_discoverychain_test.go index b16f48f63b4d..cb6a6581d86a 100644 --- a/agent/structs/config_entry_discoverychain_test.go +++ b/agent/structs/config_entry_discoverychain_test.go @@ -1397,7 +1397,7 @@ func TestServiceResolverConfigEntry(t *testing.T) { "v1": {}, }, }, - validateErr: `Bad Failover["v1"]: one of Service, ServiceSubset, Namespace, Targets, or Datacenters is required`, + validateErr: `Bad Failover["v1"]: one of Service, ServiceSubset, Namespace, Targets, SamenessGroup, or Datacenters is required`, }, { name: "failover to self using invalid subset", diff --git a/agent/structs/config_entry_sameness_group.go b/agent/structs/config_entry_sameness_group.go index c4d4e3f8a481..ba8729d8f200 100644 --- a/agent/structs/config_entry_sameness_group.go +++ b/agent/structs/config_entry_sameness_group.go @@ -70,3 +70,20 @@ type SamenessGroupMember struct { Partition string Peer string } + +func (s *SamenessGroupConfigEntry) ToFailoverTargets() []ServiceResolverFailoverTarget { + if s == nil { + return nil + } + + var targets []ServiceResolverFailoverTarget + + for _, m := range s.Members { + targets = append(targets, ServiceResolverFailoverTarget{ + Peer: m.Peer, + Partition: m.Partition, + }) + } + + return targets +} diff --git a/agent/structs/discovery_chain.go b/agent/structs/discovery_chain.go index 545aa19a2b91..fd2900b8faad 100644 --- a/agent/structs/discovery_chain.go +++ b/agent/structs/discovery_chain.go @@ -262,6 +262,34 @@ type DiscoveryTargetOpts struct { Peer string } +func MergeDiscoveryTargetOpts(o1 DiscoveryTargetOpts, o2 DiscoveryTargetOpts) DiscoveryTargetOpts { + if o2.Service != "" { + o1.Service = o2.Service + } + + if o2.ServiceSubset != "" { + o1.ServiceSubset = o2.ServiceSubset + } + + if o2.Namespace != "" { + o1.Namespace = o2.Namespace + } + + if o2.Partition != "" { + o1.Partition = o2.Partition + } + + if o2.Datacenter != "" { + o1.Datacenter = o2.Datacenter + } + + if o2.Peer != "" { + o1.Peer = o2.Peer + } + + return o1 +} + func NewDiscoveryTarget(opts DiscoveryTargetOpts) *DiscoveryTarget { t := &DiscoveryTarget{ Service: opts.Service, From 9c64731a563792fbb819fd6f33dc326af3f1b4cd Mon Sep 17 00:00:00 2001 From: Poonam Jadhav Date: Mon, 20 Mar 2023 11:24:29 -0400 Subject: [PATCH 14/30] feat: add category annotation to RPC and gRPC methods (#16646) --- agent/consul/rate/handler.go | 38 +++ agent/grpc-middleware/rate.go | 5 +- .../rate_limit_mappings.gen.go | 54 ++-- agent/rpc/middleware/interceptors.go | 3 +- agent/rpc/middleware/rate_limit_mappings.go | 272 +++++++++--------- .../protoc-gen-consul-rate-limit/main.go | 11 +- .../postprocess/main.go | 45 ++- .../annotations/ratelimit/ratelimit.pb.go | 221 ++++++++++---- .../annotations/ratelimit/ratelimit.proto | 16 ++ proto-public/pbacl/acl.pb.go | 45 +-- proto-public/pbacl/acl.proto | 10 +- proto-public/pbconnectca/ca.pb.go | 50 ++-- proto-public/pbconnectca/ca.proto | 10 +- proto-public/pbdataplane/dataplane.pb.go | 58 ++-- proto-public/pbdataplane/dataplane.proto | 10 +- proto-public/pbdns/dns.pb.go | 30 +- proto-public/pbdns/dns.proto | 5 +- proto-public/pbresource/resource.pb.go | 94 +++--- proto-public/pbresource/resource.proto | 30 +- .../pbserverdiscovery/serverdiscovery.pb.go | 43 +-- .../pbserverdiscovery/serverdiscovery.proto | 5 +- proto/private/pboperator/operator.pb.go | 44 +-- proto/private/pboperator/operator.proto | 5 +- proto/private/pbpeering/peering.pb.go | 149 +++++----- proto/private/pbpeering/peering.proto | 40 ++- proto/private/pbpeerstream/peerstream.pb.go | 62 ++-- proto/private/pbpeerstream/peerstream.proto | 10 +- proto/private/pbsubscribe/subscribe.pb.go | 28 +- proto/private/pbsubscribe/subscribe.proto | 5 +- 29 files changed, 844 insertions(+), 554 deletions(-) diff --git a/agent/consul/rate/handler.go b/agent/consul/rate/handler.go index 087cb83fa2d5..e8cb132f7ae1 100644 --- a/agent/consul/rate/handler.go +++ b/agent/consul/rate/handler.go @@ -83,6 +83,13 @@ func RequestLimitsModeFromNameWithDefault(name string) Mode { // OperationType is the type of operation the client is attempting to perform. type OperationType int +type OperationCategory string + +type OperationSpec struct { + Type OperationType + Category OperationCategory +} + const ( // OperationTypeRead represents a read operation. OperationTypeRead OperationType = iota @@ -94,6 +101,35 @@ const ( OperationTypeExempt ) +const ( + OperationCategoryACL OperationCategory = "ACL" + OperationCategoryCatalog OperationCategory = "Catalog" + OperationCategoryConfigEntry OperationCategory = "ConfigEntry" + OperationCategoryConnectCA OperationCategory = "ConnectCA" + OperationCategoryCoordinate OperationCategory = "Coordinate" + OperationCategoryDiscoveryChain OperationCategory = "DiscoveryChain" + OperationCategoryServerDiscovery OperationCategory = "ServerDiscovery" + OperationCategoryHealth OperationCategory = "Health" + OperationCategoryIntention OperationCategory = "Intention" + OperationCategoryKV OperationCategory = "KV" + OperationCategoryTenancy OperationCategory = "Tenancy" + OperationCategoryPreparedQuery OperationCategory = "PreparedQuery" + OperationCategorySession OperationCategory = "Session" + OperationCategoryStatus OperationCategory = "Status" + OperationCategoryTxn OperationCategory = "Txn" + OperationCategoryAutoConfig OperationCategory = "AutoConfig" + OperationCategoryFederationState OperationCategory = "FederationState" + OperationCategoryInternal OperationCategory = "Internal" + OperationCategoryOperator OperationCategory = "Operator" + OperationCategoryPeerStream OperationCategory = "PeerStream" + OperationCategoryPeering OperationCategory = "Peering" + OperationCategoryPartition OperationCategory = "Partition" + OperationCategoryDataPlane OperationCategory = "DataPlane" + OperationCategoryDNS OperationCategory = "DNS" + OperationCategorySubscribe OperationCategory = "Subscribe" + OperationCategoryResource OperationCategory = "Resource" +) + // Operation the client is attempting to perform. type Operation struct { // Name of the RPC endpoint (e.g. "Foo.Bar" for net/rpc and "/foo.service/Bar" for gRPC). @@ -104,6 +140,8 @@ type Operation struct { // Type of operation to be performed (e.g. read or write). Type OperationType + + Category OperationCategory } //go:generate mockery --name RequestLimitsHandler --inpackage diff --git a/agent/grpc-middleware/rate.go b/agent/grpc-middleware/rate.go index e295757bb5e9..e60445936b51 100644 --- a/agent/grpc-middleware/rate.go +++ b/agent/grpc-middleware/rate.go @@ -38,7 +38,7 @@ func ServerRateLimiterMiddleware(limiter rate.RequestLimitsHandler, panicHandler return ctx, status.Error(codes.Internal, "gRPC rate limit middleware unable to read peer") } - operationType, ok := rpcRateLimitSpecs[info.FullMethodName] + operationSpec, ok := rpcRateLimitSpecs[info.FullMethodName] if !ok { logger.Warn("failed to determine which rate limit to apply to RPC", "rpc", info.FullMethodName) return ctx, nil @@ -47,7 +47,8 @@ func ServerRateLimiterMiddleware(limiter rate.RequestLimitsHandler, panicHandler err := limiter.Allow(rate.Operation{ Name: info.FullMethodName, SourceAddr: peer.Addr, - Type: operationType, + Type: operationSpec.Type, + Category: operationSpec.Category, }) switch { diff --git a/agent/grpc-middleware/rate_limit_mappings.gen.go b/agent/grpc-middleware/rate_limit_mappings.gen.go index ed593ac12434..766d4b954e99 100644 --- a/agent/grpc-middleware/rate_limit_mappings.gen.go +++ b/agent/grpc-middleware/rate_limit_mappings.gen.go @@ -3,31 +3,31 @@ package middleware import "github.com/hashicorp/consul/agent/consul/rate" -var rpcRateLimitSpecs = map[string]rate.OperationType{ - "/hashicorp.consul.acl.ACLService/Login": rate.OperationTypeWrite, - "/hashicorp.consul.acl.ACLService/Logout": rate.OperationTypeWrite, - "/hashicorp.consul.connectca.ConnectCAService/Sign": rate.OperationTypeWrite, - "/hashicorp.consul.connectca.ConnectCAService/WatchRoots": rate.OperationTypeRead, - "/hashicorp.consul.dataplane.DataplaneService/GetEnvoyBootstrapParams": rate.OperationTypeRead, - "/hashicorp.consul.dataplane.DataplaneService/GetSupportedDataplaneFeatures": rate.OperationTypeRead, - "/hashicorp.consul.dns.DNSService/Query": rate.OperationTypeRead, - "/hashicorp.consul.internal.operator.OperatorService/TransferLeader": rate.OperationTypeExempt, - "/hashicorp.consul.internal.peering.PeeringService/Establish": rate.OperationTypeWrite, - "/hashicorp.consul.internal.peering.PeeringService/GenerateToken": rate.OperationTypeWrite, - "/hashicorp.consul.internal.peering.PeeringService/PeeringDelete": rate.OperationTypeWrite, - "/hashicorp.consul.internal.peering.PeeringService/PeeringList": rate.OperationTypeRead, - "/hashicorp.consul.internal.peering.PeeringService/PeeringRead": rate.OperationTypeRead, - "/hashicorp.consul.internal.peering.PeeringService/PeeringWrite": rate.OperationTypeWrite, - "/hashicorp.consul.internal.peering.PeeringService/TrustBundleListByService": rate.OperationTypeRead, - "/hashicorp.consul.internal.peering.PeeringService/TrustBundleRead": rate.OperationTypeRead, - "/hashicorp.consul.internal.peerstream.PeerStreamService/ExchangeSecret": rate.OperationTypeWrite, - "/hashicorp.consul.internal.peerstream.PeerStreamService/StreamResources": rate.OperationTypeRead, - "/hashicorp.consul.resource.ResourceService/Delete": rate.OperationTypeWrite, - "/hashicorp.consul.resource.ResourceService/List": rate.OperationTypeRead, - "/hashicorp.consul.resource.ResourceService/Read": rate.OperationTypeRead, - "/hashicorp.consul.resource.ResourceService/Watch": rate.OperationTypeRead, - "/hashicorp.consul.resource.ResourceService/Write": rate.OperationTypeWrite, - "/hashicorp.consul.resource.ResourceService/WriteStatus": rate.OperationTypeWrite, - "/hashicorp.consul.serverdiscovery.ServerDiscoveryService/WatchServers": rate.OperationTypeRead, - "/subscribe.StateChangeSubscription/Subscribe": rate.OperationTypeRead, +var rpcRateLimitSpecs = map[string]rate.OperationSpec{ + "/hashicorp.consul.acl.ACLService/Login": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "/hashicorp.consul.acl.ACLService/Logout": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "/hashicorp.consul.connectca.ConnectCAService/Sign": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryConnectCA}, + "/hashicorp.consul.connectca.ConnectCAService/WatchRoots": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConnectCA}, + "/hashicorp.consul.dataplane.DataplaneService/GetEnvoyBootstrapParams": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryDataPlane}, + "/hashicorp.consul.dataplane.DataplaneService/GetSupportedDataplaneFeatures": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryDataPlane}, + "/hashicorp.consul.dns.DNSService/Query": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryDNS}, + "/hashicorp.consul.internal.operator.OperatorService/TransferLeader": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "/hashicorp.consul.internal.peering.PeeringService/Establish": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/GenerateToken": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/PeeringDelete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/PeeringList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/PeeringRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/PeeringWrite": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/TrustBundleListByService": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peering.PeeringService/TrustBundleRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPeering}, + "/hashicorp.consul.internal.peerstream.PeerStreamService/ExchangeSecret": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryPeerStream}, + "/hashicorp.consul.internal.peerstream.PeerStreamService/StreamResources": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPeerStream}, + "/hashicorp.consul.resource.ResourceService/Delete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryResource}, + "/hashicorp.consul.resource.ResourceService/List": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryResource}, + "/hashicorp.consul.resource.ResourceService/Read": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryResource}, + "/hashicorp.consul.resource.ResourceService/Watch": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryResource}, + "/hashicorp.consul.resource.ResourceService/Write": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryResource}, + "/hashicorp.consul.resource.ResourceService/WriteStatus": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryResource}, + "/hashicorp.consul.serverdiscovery.ServerDiscoveryService/WatchServers": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryServerDiscovery}, + "/subscribe.StateChangeSubscription/Subscribe": {Type: rate.OperationTypeRead, Category: rate.OperationCategorySubscribe}, } diff --git a/agent/rpc/middleware/interceptors.go b/agent/rpc/middleware/interceptors.go index 8c5d6c15e108..d0ad5137929d 100644 --- a/agent/rpc/middleware/interceptors.go +++ b/agent/rpc/middleware/interceptors.go @@ -173,7 +173,8 @@ func GetNetRPCRateLimitingInterceptor(requestLimitsHandler rpcRate.RequestLimits op := rpcRate.Operation{ Name: reqServiceMethod, SourceAddr: sourceAddr, - Type: rpcRateLimitSpecs[reqServiceMethod], + Type: rpcRateLimitSpecs[reqServiceMethod].Type, + Category: rpcRateLimitSpecs[reqServiceMethod].Category, } // net/rpc does not provide a way to encode the nuances of the diff --git a/agent/rpc/middleware/rate_limit_mappings.go b/agent/rpc/middleware/rate_limit_mappings.go index a0ca13c4c1eb..65c241a277d7 100644 --- a/agent/rpc/middleware/rate_limit_mappings.go +++ b/agent/rpc/middleware/rate_limit_mappings.go @@ -5,140 +5,140 @@ import "github.com/hashicorp/consul/agent/consul/rate" // Maps each net/rpc endpoint to a read or write operation type // for rate limiting purposes. Please be sure to update this list // if a net/rpc endpoint is removed. -var rpcRateLimitSpecs = map[string]rate.OperationType{ - "ACL.AuthMethodDelete": rate.OperationTypeWrite, - "ACL.AuthMethodList": rate.OperationTypeRead, - "ACL.AuthMethodRead": rate.OperationTypeRead, - "ACL.AuthMethodSet": rate.OperationTypeWrite, - "ACL.Authorize": rate.OperationTypeRead, - "ACL.BindingRuleDelete": rate.OperationTypeWrite, - "ACL.BindingRuleList": rate.OperationTypeRead, - "ACL.BindingRuleRead": rate.OperationTypeRead, - "ACL.BindingRuleSet": rate.OperationTypeWrite, - "ACL.BootstrapTokens": rate.OperationTypeRead, - "ACL.Login": rate.OperationTypeWrite, - "ACL.Logout": rate.OperationTypeWrite, - "ACL.PolicyBatchRead": rate.OperationTypeRead, - "ACL.PolicyDelete": rate.OperationTypeWrite, - "ACL.PolicyList": rate.OperationTypeRead, - "ACL.PolicyRead": rate.OperationTypeRead, - "ACL.PolicyResolve": rate.OperationTypeRead, - "ACL.PolicySet": rate.OperationTypeWrite, - "ACL.ReplicationStatus": rate.OperationTypeRead, - "ACL.RoleBatchRead": rate.OperationTypeRead, - "ACL.RoleDelete": rate.OperationTypeWrite, - "ACL.RoleList": rate.OperationTypeRead, - "ACL.RoleRead": rate.OperationTypeRead, - "ACL.RoleResolve": rate.OperationTypeRead, - "ACL.RoleSet": rate.OperationTypeWrite, - "ACL.TokenBatchRead": rate.OperationTypeRead, - "ACL.TokenClone": rate.OperationTypeRead, - "ACL.TokenDelete": rate.OperationTypeWrite, - "ACL.TokenList": rate.OperationTypeRead, - "ACL.TokenRead": rate.OperationTypeRead, - "ACL.TokenSet": rate.OperationTypeWrite, - - "AutoConfig.InitialConfiguration": rate.OperationTypeRead, - - "AutoEncrypt.Sign": rate.OperationTypeWrite, - - "Catalog.Deregister": rate.OperationTypeWrite, - "Catalog.GatewayServices": rate.OperationTypeRead, - "Catalog.ListDatacenters": rate.OperationTypeRead, - "Catalog.ListNodes": rate.OperationTypeRead, - "Catalog.ListServices": rate.OperationTypeRead, - "Catalog.NodeServiceList": rate.OperationTypeRead, - "Catalog.NodeServices": rate.OperationTypeRead, - "Catalog.Register": rate.OperationTypeWrite, - "Catalog.ServiceList": rate.OperationTypeRead, - "Catalog.ServiceNodes": rate.OperationTypeRead, - "Catalog.VirtualIPForService": rate.OperationTypeRead, - - "ConfigEntry.Apply": rate.OperationTypeWrite, - "ConfigEntry.Delete": rate.OperationTypeWrite, - "ConfigEntry.Get": rate.OperationTypeRead, - "ConfigEntry.List": rate.OperationTypeRead, - "ConfigEntry.ListAll": rate.OperationTypeRead, - "ConfigEntry.ResolveServiceConfig": rate.OperationTypeRead, - - "ConnectCA.ConfigurationGet": rate.OperationTypeRead, - "ConnectCA.ConfigurationSet": rate.OperationTypeWrite, - "ConnectCA.Roots": rate.OperationTypeRead, - "ConnectCA.Sign": rate.OperationTypeWrite, - "ConnectCA.SignIntermediate": rate.OperationTypeWrite, - - "Coordinate.ListDatacenters": rate.OperationTypeRead, - "Coordinate.ListNodes": rate.OperationTypeRead, - "Coordinate.Node": rate.OperationTypeRead, - "Coordinate.Update": rate.OperationTypeWrite, - - "DiscoveryChain.Get": rate.OperationTypeRead, - - "FederationState.Apply": rate.OperationTypeWrite, - "FederationState.Delete": rate.OperationTypeWrite, - "FederationState.Get": rate.OperationTypeRead, - "FederationState.List": rate.OperationTypeRead, - "FederationState.ListMeshGateways": rate.OperationTypeRead, - - "Health.ChecksInState": rate.OperationTypeRead, - "Health.NodeChecks": rate.OperationTypeRead, - "Health.ServiceChecks": rate.OperationTypeRead, - "Health.ServiceNodes": rate.OperationTypeRead, - - "Intention.Apply": rate.OperationTypeWrite, - "Intention.Check": rate.OperationTypeRead, - "Intention.Get": rate.OperationTypeRead, - "Intention.List": rate.OperationTypeRead, - "Intention.Match": rate.OperationTypeRead, - - "Internal.CatalogOverview": rate.OperationTypeRead, - "Internal.EventFire": rate.OperationTypeWrite, - "Internal.ExportedPeeredServices": rate.OperationTypeRead, - "Internal.ExportedServicesForPeer": rate.OperationTypeRead, - "Internal.GatewayIntentions": rate.OperationTypeRead, - "Internal.GatewayServiceDump": rate.OperationTypeRead, - "Internal.IntentionUpstreams": rate.OperationTypeRead, - "Internal.IntentionUpstreamsDestination": rate.OperationTypeRead, - "Internal.KeyringOperation": rate.OperationTypeRead, - "Internal.NodeDump": rate.OperationTypeRead, - "Internal.NodeInfo": rate.OperationTypeRead, - "Internal.PeeredUpstreams": rate.OperationTypeRead, - "Internal.ServiceDump": rate.OperationTypeRead, - "Internal.ServiceGateways": rate.OperationTypeRead, - "Internal.ServiceTopology": rate.OperationTypeRead, - - "KVS.Apply": rate.OperationTypeWrite, - "KVS.Get": rate.OperationTypeRead, - "KVS.List": rate.OperationTypeRead, - "KVS.ListKeys": rate.OperationTypeRead, - - "Operator.AutopilotGetConfiguration": rate.OperationTypeExempt, - "Operator.AutopilotSetConfiguration": rate.OperationTypeExempt, - "Operator.AutopilotState": rate.OperationTypeExempt, - "Operator.RaftGetConfiguration": rate.OperationTypeExempt, - "Operator.RaftRemovePeerByAddress": rate.OperationTypeExempt, - "Operator.RaftRemovePeerByID": rate.OperationTypeExempt, - "Operator.ServerHealth": rate.OperationTypeExempt, - - "PreparedQuery.Apply": rate.OperationTypeWrite, - "PreparedQuery.Execute": rate.OperationTypeRead, - "PreparedQuery.ExecuteRemote": rate.OperationTypeRead, - "PreparedQuery.Explain": rate.OperationTypeRead, - "PreparedQuery.Get": rate.OperationTypeRead, - "PreparedQuery.List": rate.OperationTypeRead, - - "Session.Apply": rate.OperationTypeWrite, - "Session.Check": rate.OperationTypeRead, - "Session.Get": rate.OperationTypeRead, - "Session.List": rate.OperationTypeRead, - "Session.NodeSessions": rate.OperationTypeRead, - "Session.Renew": rate.OperationTypeWrite, - - "Status.Leader": rate.OperationTypeExempt, - "Status.Peers": rate.OperationTypeExempt, - "Status.Ping": rate.OperationTypeExempt, - "Status.RaftStats": rate.OperationTypeExempt, - - "Txn.Apply": rate.OperationTypeWrite, - "Txn.Read": rate.OperationTypeRead, +var rpcRateLimitSpecs = map[string]rate.OperationSpec{ + "ACL.AuthMethodDelete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.AuthMethodList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.AuthMethodRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.AuthMethodSet": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.Authorize": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.BindingRuleDelete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.BindingRuleList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.BindingRuleRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.BindingRuleSet": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.BootstrapTokens": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.Login": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.Logout": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.PolicyBatchRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.PolicyDelete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.PolicyList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.PolicyRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.PolicyResolve": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.PolicySet": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.ReplicationStatus": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.RoleBatchRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.RoleDelete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.RoleList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.RoleRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.RoleResolve": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.RoleSet": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.TokenBatchRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.TokenClone": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.TokenDelete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + "ACL.TokenList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.TokenRead": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryACL}, + "ACL.TokenSet": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryACL}, + + "AutoConfig.InitialConfiguration": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryAutoConfig}, + + "AutoEncrypt.Sign": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryAutoConfig}, + + "Catalog.Deregister": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryCatalog}, + "Catalog.GatewayServices": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.ListDatacenters": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.ListNodes": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.ListServices": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.NodeServiceList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.NodeServices": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.Register": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryCatalog}, + "Catalog.ServiceList": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.ServiceNodes": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + "Catalog.VirtualIPForService": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCatalog}, + + "ConfigEntry.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryConfigEntry}, + "ConfigEntry.Delete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryConfigEntry}, + "ConfigEntry.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConfigEntry}, + "ConfigEntry.List": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConfigEntry}, + "ConfigEntry.ListAll": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConfigEntry}, + "ConfigEntry.ResolveServiceConfig": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConfigEntry}, + + "ConnectCA.ConfigurationGet": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConnectCA}, + "ConnectCA.ConfigurationSet": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryConnectCA}, + "ConnectCA.Roots": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryConnectCA}, + "ConnectCA.Sign": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryConnectCA}, + "ConnectCA.SignIntermediate": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryConnectCA}, + + "Coordinate.ListDatacenters": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCoordinate}, + "Coordinate.ListNodes": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCoordinate}, + "Coordinate.Node": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryCoordinate}, + "Coordinate.Update": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryCoordinate}, + + "DiscoveryChain.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryDiscoveryChain}, + + "FederationState.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryFederationState}, + "FederationState.Delete": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryFederationState}, + "FederationState.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryFederationState}, + "FederationState.List": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryFederationState}, + "FederationState.ListMeshGateways": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryFederationState}, + + "Health.ChecksInState": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryHealth}, + "Health.NodeChecks": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryHealth}, + "Health.ServiceChecks": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryHealth}, + "Health.ServiceNodes": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryHealth}, + + "Intention.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryIntention}, + "Intention.Check": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryIntention}, + "Intention.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryIntention}, + "Intention.List": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryIntention}, + "Intention.Match": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryIntention}, + + "Internal.CatalogOverview": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.EventFire": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryInternal}, + "Internal.ExportedPeeredServices": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.ExportedServicesForPeer": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.GatewayIntentions": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.GatewayServiceDump": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.IntentionUpstreams": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.IntentionUpstreamsDestination": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.KeyringOperation": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.NodeDump": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.NodeInfo": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.PeeredUpstreams": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.ServiceDump": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.ServiceGateways": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + "Internal.ServiceTopology": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryInternal}, + + "KVS.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryKV}, + "KVS.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryKV}, + "KVS.List": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryKV}, + "KVS.ListKeys": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryKV}, + + "Operator.AutopilotGetConfiguration": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "Operator.AutopilotSetConfiguration": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "Operator.AutopilotState": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "Operator.RaftGetConfiguration": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "Operator.RaftRemovePeerByAddress": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "Operator.RaftRemovePeerByID": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + "Operator.ServerHealth": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryOperator}, + + "PreparedQuery.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryPreparedQuery}, + "PreparedQuery.Execute": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPreparedQuery}, + "PreparedQuery.ExecuteRemote": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPreparedQuery}, + "PreparedQuery.Explain": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPreparedQuery}, + "PreparedQuery.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPreparedQuery}, + "PreparedQuery.List": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryPreparedQuery}, + + "Session.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategorySession}, + "Session.Check": {Type: rate.OperationTypeRead, Category: rate.OperationCategorySession}, + "Session.Get": {Type: rate.OperationTypeRead, Category: rate.OperationCategorySession}, + "Session.List": {Type: rate.OperationTypeRead, Category: rate.OperationCategorySession}, + "Session.NodeSessions": {Type: rate.OperationTypeRead, Category: rate.OperationCategorySession}, + "Session.Renew": {Type: rate.OperationTypeWrite, Category: rate.OperationCategorySession}, + + "Status.Leader": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryStatus}, + "Status.Peers": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryStatus}, + "Status.Ping": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryStatus}, + "Status.RaftStats": {Type: rate.OperationTypeExempt, Category: rate.OperationCategoryStatus}, + + "Txn.Apply": {Type: rate.OperationTypeWrite, Category: rate.OperationCategoryTxn}, + "Txn.Read": {Type: rate.OperationTypeRead, Category: rate.OperationCategoryTxn}, } diff --git a/internal/tools/protoc-gen-consul-rate-limit/main.go b/internal/tools/protoc-gen-consul-rate-limit/main.go index 7ba20604acf4..57d53a1bbc0f 100644 --- a/internal/tools/protoc-gen-consul-rate-limit/main.go +++ b/internal/tools/protoc-gen-consul-rate-limit/main.go @@ -12,6 +12,7 @@ // rpc Bar(BarRequest) returns (BarResponse) { // option (hashicorp.consul.internal.ratelimit.spec) = { // operation_type: OPERATION_TYPE_WRITE, +// operation_category: OPERATION_CATEGORY_ACL // }; // } // } @@ -22,6 +23,7 @@ // { // "MethodName": "/Foo/Bar", // "OperationType": "OPERATION_TYPE_WRITE", +// "OperationCategory": "OPERATION_CATEGORY_ACL" // } // ] // @@ -54,6 +56,7 @@ const ( rpc %s(...) returns (...) { option (hashicorp.consul.internal.ratelimit.spec) = { operation_type: OPERATION_TYPE_READ | OPERATION_TYPE_WRITE | OPERATION_TYPE_EXEMPT, + operation_category: OPERATION_CATEGORY_ACL | OPERATION_CATEGORY_PEER_STREAM | OPERATION_CATEGORY_CONNECT_CA | OPERATION_CATEGORY_PARTITION | OPERATION_CATEGORY_PEERING | OPERATION_CATEGORY_SERVER_DISCOVERY | OPERATION_CATEGORY_DATAPLANE | OPERATION_CATEGORY_DNS | OPERATION_CATEGORY_SUBSCRIBE | OPERATION_CATEGORY_OPERATOR | OPERATION_CATEGORY_RESOURCE, }; } } @@ -63,9 +66,10 @@ const ( ) type rateLimitSpec struct { - MethodName string - OperationType string - Enterprise bool + MethodName string + OperationType string + OperationCategory string + Enterprise bool } func main() { @@ -123,6 +127,7 @@ func rateLimitSpecs(file *protogen.File) ([]rateLimitSpec, error) { def := proto.GetExtension(options, ratelimit.E_Spec).(*ratelimit.Spec) spec.OperationType = def.OperationType.String() + spec.OperationCategory = def.OperationCategory.String() specs = append(specs, spec) } diff --git a/internal/tools/protoc-gen-consul-rate-limit/postprocess/main.go b/internal/tools/protoc-gen-consul-rate-limit/postprocess/main.go index 4d5eabb58a24..3d09b647508d 100644 --- a/internal/tools/protoc-gen-consul-rate-limit/postprocess/main.go +++ b/internal/tools/protoc-gen-consul-rate-limit/postprocess/main.go @@ -96,9 +96,10 @@ func enterpriseFileName(filename string) string { } type spec struct { - MethodName string - OperationType string - Enterprise bool + MethodName string + OperationType string + Enterprise bool + OperationCategory string } func (s spec) GoOperationType() string { @@ -113,6 +114,34 @@ func (s spec) GoOperationType() string { panic(fmt.Sprintf("unknown rate limit operation type: %s", s.OperationType)) } +func (s spec) GoOperationCategory() string { + switch s.OperationCategory { + case "OPERATION_CATEGORY_ACL": + return "rate.OperationCategoryACL" + case "OPERATION_CATEGORY_PEER_STREAM": + return "rate.OperationCategoryPeerStream" + case "OPERATION_CATEGORY_CONNECT_CA": + return "rate.OperationCategoryConnectCA" + case "OPERATION_CATEGORY_PARTITION": + return "rate.OperationCategoryPartition" + case "OPERATION_CATEGORY_PEERING": + return "rate.OperationCategoryPeering" + case "OPERATION_CATEGORY_SERVER_DISCOVERY": + return "rate.OperationCategoryServerDiscovery" + case "OPERATION_CATEGORY_DATAPLANE": + return "rate.OperationCategoryDataPlane" + case "OPERATION_CATEGORY_DNS": + return "rate.OperationCategoryDNS" + case "OPERATION_CATEGORY_SUBSCRIBE": + return "rate.OperationCategorySubscribe" + case "OPERATION_CATEGORY_OPERATOR": + return "rate.OperationCategoryOperator" + case "OPERATION_CATEGORY_RESOURCE": + return "rate.OperationCategoryResource" + } + panic(fmt.Sprintf("unknown rate limit operation category: %s found in method: %s", s.OperationCategory, s.MethodName)) +} + func collectSpecs(inputPaths []string) ([]spec, []spec, error) { var specs []spec var specFiles []string @@ -165,16 +194,16 @@ func generateOSS(specs []spec) ([]byte, error) { var output bytes.Buffer output.WriteString(fileHeader) - fmt.Fprintln(&output, `var rpcRateLimitSpecs = map[string]rate.OperationType{`) + fmt.Fprintln(&output, `var rpcRateLimitSpecs = map[string]rate.OperationSpec{`) for _, spec := range specs { - fmt.Fprintf(&output, `"%s": %s,`, spec.MethodName, spec.GoOperationType()) + fmt.Fprintf(&output, `"%s": {Type: %s, Category: %s},`, spec.MethodName, spec.GoOperationType(), spec.GoOperationCategory()) output.WriteString("\n") } output.WriteString("}") formatted, err := format.Source(output.Bytes()) if err != nil { - return nil, fmt.Errorf("failed to format source: %w", err) + return nil, fmt.Errorf("failed to format source in oss: %w", err) } return formatted, nil } @@ -186,14 +215,14 @@ func generateENT(specs []spec) ([]byte, error) { output.WriteString("func init() {\n") for _, spec := range specs { - fmt.Fprintf(&output, `rpcRateLimitSpecs["%s"] = %s`, spec.MethodName, spec.GoOperationType()) + fmt.Fprintf(&output, `rpcRateLimitSpecs["%s"] = rate.OperationSpec{Type: %s, Category: %s}`, spec.MethodName, spec.GoOperationType(), spec.GoOperationCategory()) output.WriteString("\n") } output.WriteString("}") formatted, err := format.Source(output.Bytes()) if err != nil { - return nil, fmt.Errorf("failed to format source: %w", err) + return nil, fmt.Errorf("failed to format source in ent: %w", err) } return formatted, nil } diff --git a/proto-public/annotations/ratelimit/ratelimit.pb.go b/proto-public/annotations/ratelimit/ratelimit.pb.go index 6887640f6ca7..c56506f45313 100644 --- a/proto-public/annotations/ratelimit/ratelimit.pb.go +++ b/proto-public/annotations/ratelimit/ratelimit.pb.go @@ -75,13 +75,90 @@ func (OperationType) EnumDescriptor() ([]byte, []int) { return file_annotations_ratelimit_ratelimit_proto_rawDescGZIP(), []int{0} } +type OperationCategory int32 + +const ( + OperationCategory_OPERATION_CATEGORY_UNSPECIFIED OperationCategory = 0 + OperationCategory_OPERATION_CATEGORY_ACL OperationCategory = 1 + OperationCategory_OPERATION_CATEGORY_PEER_STREAM OperationCategory = 2 + OperationCategory_OPERATION_CATEGORY_CONNECT_CA OperationCategory = 3 + OperationCategory_OPERATION_CATEGORY_PARTITION OperationCategory = 4 + OperationCategory_OPERATION_CATEGORY_PEERING OperationCategory = 5 + OperationCategory_OPERATION_CATEGORY_SERVER_DISCOVERY OperationCategory = 6 + OperationCategory_OPERATION_CATEGORY_DATAPLANE OperationCategory = 7 + OperationCategory_OPERATION_CATEGORY_DNS OperationCategory = 8 + OperationCategory_OPERATION_CATEGORY_SUBSCRIBE OperationCategory = 9 + OperationCategory_OPERATION_CATEGORY_OPERATOR OperationCategory = 10 + OperationCategory_OPERATION_CATEGORY_RESOURCE OperationCategory = 11 +) + +// Enum value maps for OperationCategory. +var ( + OperationCategory_name = map[int32]string{ + 0: "OPERATION_CATEGORY_UNSPECIFIED", + 1: "OPERATION_CATEGORY_ACL", + 2: "OPERATION_CATEGORY_PEER_STREAM", + 3: "OPERATION_CATEGORY_CONNECT_CA", + 4: "OPERATION_CATEGORY_PARTITION", + 5: "OPERATION_CATEGORY_PEERING", + 6: "OPERATION_CATEGORY_SERVER_DISCOVERY", + 7: "OPERATION_CATEGORY_DATAPLANE", + 8: "OPERATION_CATEGORY_DNS", + 9: "OPERATION_CATEGORY_SUBSCRIBE", + 10: "OPERATION_CATEGORY_OPERATOR", + 11: "OPERATION_CATEGORY_RESOURCE", + } + OperationCategory_value = map[string]int32{ + "OPERATION_CATEGORY_UNSPECIFIED": 0, + "OPERATION_CATEGORY_ACL": 1, + "OPERATION_CATEGORY_PEER_STREAM": 2, + "OPERATION_CATEGORY_CONNECT_CA": 3, + "OPERATION_CATEGORY_PARTITION": 4, + "OPERATION_CATEGORY_PEERING": 5, + "OPERATION_CATEGORY_SERVER_DISCOVERY": 6, + "OPERATION_CATEGORY_DATAPLANE": 7, + "OPERATION_CATEGORY_DNS": 8, + "OPERATION_CATEGORY_SUBSCRIBE": 9, + "OPERATION_CATEGORY_OPERATOR": 10, + "OPERATION_CATEGORY_RESOURCE": 11, + } +) + +func (x OperationCategory) Enum() *OperationCategory { + p := new(OperationCategory) + *p = x + return p +} + +func (x OperationCategory) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OperationCategory) Descriptor() protoreflect.EnumDescriptor { + return file_annotations_ratelimit_ratelimit_proto_enumTypes[1].Descriptor() +} + +func (OperationCategory) Type() protoreflect.EnumType { + return &file_annotations_ratelimit_ratelimit_proto_enumTypes[1] +} + +func (x OperationCategory) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OperationCategory.Descriptor instead. +func (OperationCategory) EnumDescriptor() ([]byte, []int) { + return file_annotations_ratelimit_ratelimit_proto_rawDescGZIP(), []int{1} +} + // Spec describes the kind of rate limit that will be applied to this RPC. type Spec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OperationType OperationType `protobuf:"varint,1,opt,name=operation_type,json=operationType,proto3,enum=hashicorp.consul.internal.ratelimit.OperationType" json:"operation_type,omitempty"` + OperationType OperationType `protobuf:"varint,1,opt,name=operation_type,json=operationType,proto3,enum=hashicorp.consul.internal.ratelimit.OperationType" json:"operation_type,omitempty"` + OperationCategory OperationCategory `protobuf:"varint,2,opt,name=operation_category,json=operationCategory,proto3,enum=hashicorp.consul.internal.ratelimit.OperationCategory" json:"operation_category,omitempty"` } func (x *Spec) Reset() { @@ -123,6 +200,13 @@ func (x *Spec) GetOperationType() OperationType { return OperationType_OPERATION_TYPE_UNSPECIFIED } +func (x *Spec) GetOperationCategory() OperationCategory { + if x != nil { + return x.OperationCategory + } + return OperationCategory_OPERATION_CATEGORY_UNSPECIFIED +} + var file_annotations_ratelimit_ratelimit_proto_extTypes = []protoimpl.ExtensionInfo{ { ExtendedType: (*descriptorpb.MethodOptions)(nil), @@ -149,47 +233,80 @@ var file_annotations_ratelimit_ratelimit_proto_rawDesc = []byte{ 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, - 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, + 0x01, 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x32, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x74, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x65, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x2a, 0x7d, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x45, 0x4d, 0x50, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, - 0x13, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x03, - 0x3a, 0x5e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xec, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x74, 0x65, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x42, 0xa9, 0x02, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x52, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, - 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0xa2, 0x02, - 0x04, 0x48, 0x43, 0x49, 0x52, 0xaa, 0x02, 0x23, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0xca, 0x02, 0x23, 0x48, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0xe2, 0x02, 0x2f, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x52, 0x61, - 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x26, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, - 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x3a, 0x3a, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2a, 0x7d, 0x0a, 0x0d, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x45, + 0x4d, 0x50, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x18, + 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x03, 0x2a, 0xa7, 0x03, 0x0a, 0x11, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x22, + 0x0a, 0x1e, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x01, 0x12, 0x22, + 0x0a, 0x1e, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, + 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x5f, 0x43, 0x41, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x41, 0x52, 0x54, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x45, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x45, + 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x50, 0x45, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x10, 0x06, + 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, + 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x50, 0x4c, 0x41, 0x4e, 0x45, + 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x4e, 0x53, 0x10, 0x08, 0x12, 0x20, + 0x0a, 0x1c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x10, 0x09, + 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, + 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, + 0x0a, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x10, 0x0b, 0x3a, 0x5e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xec, 0x40, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x72, 0x61, + 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x42, 0xa9, 0x02, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, + 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, 0x52, 0xaa, 0x02, 0x23, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0xca, 0x02, 0x23, + 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0xe2, 0x02, 0x2f, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, + 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x26, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x52, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -204,22 +321,24 @@ func file_annotations_ratelimit_ratelimit_proto_rawDescGZIP() []byte { return file_annotations_ratelimit_ratelimit_proto_rawDescData } -var file_annotations_ratelimit_ratelimit_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_annotations_ratelimit_ratelimit_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_annotations_ratelimit_ratelimit_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_annotations_ratelimit_ratelimit_proto_goTypes = []interface{}{ (OperationType)(0), // 0: hashicorp.consul.internal.ratelimit.OperationType - (*Spec)(nil), // 1: hashicorp.consul.internal.ratelimit.Spec - (*descriptorpb.MethodOptions)(nil), // 2: google.protobuf.MethodOptions + (OperationCategory)(0), // 1: hashicorp.consul.internal.ratelimit.OperationCategory + (*Spec)(nil), // 2: hashicorp.consul.internal.ratelimit.Spec + (*descriptorpb.MethodOptions)(nil), // 3: google.protobuf.MethodOptions } var file_annotations_ratelimit_ratelimit_proto_depIdxs = []int32{ 0, // 0: hashicorp.consul.internal.ratelimit.Spec.operation_type:type_name -> hashicorp.consul.internal.ratelimit.OperationType - 2, // 1: hashicorp.consul.internal.ratelimit.spec:extendee -> google.protobuf.MethodOptions - 1, // 2: hashicorp.consul.internal.ratelimit.spec:type_name -> hashicorp.consul.internal.ratelimit.Spec - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 2, // [2:3] is the sub-list for extension type_name - 1, // [1:2] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 1, // 1: hashicorp.consul.internal.ratelimit.Spec.operation_category:type_name -> hashicorp.consul.internal.ratelimit.OperationCategory + 3, // 2: hashicorp.consul.internal.ratelimit.spec:extendee -> google.protobuf.MethodOptions + 2, // 3: hashicorp.consul.internal.ratelimit.spec:type_name -> hashicorp.consul.internal.ratelimit.Spec + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 3, // [3:4] is the sub-list for extension type_name + 2, // [2:3] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_annotations_ratelimit_ratelimit_proto_init() } @@ -246,7 +365,7 @@ func file_annotations_ratelimit_ratelimit_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_annotations_ratelimit_ratelimit_proto_rawDesc, - NumEnums: 1, + NumEnums: 2, NumMessages: 1, NumExtensions: 1, NumServices: 0, diff --git a/proto-public/annotations/ratelimit/ratelimit.proto b/proto-public/annotations/ratelimit/ratelimit.proto index f60a7880ac1f..ddb71c5257ce 100644 --- a/proto-public/annotations/ratelimit/ratelimit.proto +++ b/proto-public/annotations/ratelimit/ratelimit.proto @@ -13,9 +13,25 @@ enum OperationType { OPERATION_TYPE_WRITE = 3; } +enum OperationCategory { + OPERATION_CATEGORY_UNSPECIFIED = 0; + OPERATION_CATEGORY_ACL = 1; + OPERATION_CATEGORY_PEER_STREAM = 2; + OPERATION_CATEGORY_CONNECT_CA = 3; + OPERATION_CATEGORY_PARTITION = 4; + OPERATION_CATEGORY_PEERING = 5; + OPERATION_CATEGORY_SERVER_DISCOVERY = 6; + OPERATION_CATEGORY_DATAPLANE = 7; + OPERATION_CATEGORY_DNS = 8; + OPERATION_CATEGORY_SUBSCRIBE = 9; + OPERATION_CATEGORY_OPERATOR = 10; + OPERATION_CATEGORY_RESOURCE = 11; +} + // Spec describes the kind of rate limit that will be applied to this RPC. message Spec { OperationType operation_type = 1; + OperationCategory operation_category = 2; } extend google.protobuf.MethodOptions { diff --git a/proto-public/pbacl/acl.pb.go b/proto-public/pbacl/acl.pb.go index f574708e2bd0..865cc902822b 100644 --- a/proto-public/pbacl/acl.pb.go +++ b/proto-public/pbacl/acl.pb.go @@ -360,32 +360,33 @@ var file_pbacl_acl_proto_rawDesc = []byte{ 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, - 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x32, 0xc3, 0x01, 0x0a, 0x0a, 0x41, 0x43, 0x4c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x32, 0xc7, 0x01, 0x0a, 0x0a, 0x41, 0x43, 0x4c, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x22, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x61, 0x63, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x61, 0x63, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, - 0x03, 0x12, 0x5b, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x23, 0x2e, 0x68, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x61, - 0x63, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x2e, 0x61, 0x63, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x03, 0x42, 0xc6, - 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x61, 0x63, 0x6c, 0x42, 0x08, 0x41, 0x63, 0x6c, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x2f, 0x70, 0x62, 0x61, 0x63, 0x6c, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x41, 0xaa, 0x02, 0x14, - 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x41, 0x63, 0x6c, 0xca, 0x02, 0x14, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x41, 0x63, 0x6c, 0xe2, 0x02, 0x20, 0x48, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x41, - 0x63, 0x6c, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x16, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x3a, 0x3a, 0x41, 0x63, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, + 0x03, 0x10, 0x01, 0x12, 0x5d, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x23, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x61, 0x63, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x61, 0x63, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, + 0x10, 0x01, 0x42, 0xc6, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x61, 0x63, 0x6c, 0x42, + 0x08, 0x41, 0x63, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x61, 0x63, 0x6c, 0xa2, 0x02, 0x03, 0x48, 0x43, + 0x41, 0xaa, 0x02, 0x14, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x41, 0x63, 0x6c, 0xca, 0x02, 0x14, 0x48, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x41, 0x63, 0x6c, 0xe2, + 0x02, 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x5c, 0x41, 0x63, 0x6c, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x16, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x41, 0x63, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/proto-public/pbacl/acl.proto b/proto-public/pbacl/acl.proto index 1e8d96457567..91308d6aebe9 100644 --- a/proto-public/pbacl/acl.proto +++ b/proto-public/pbacl/acl.proto @@ -8,12 +8,18 @@ service ACLService { // Login exchanges the presented bearer token for a Consul ACL token using a // configured auth method. rpc Login(LoginRequest) returns (LoginResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_ACL + }; } // Logout destroys the given ACL token once the caller is done with it. rpc Logout(LogoutRequest) returns (LogoutResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_ACL + }; } } diff --git a/proto-public/pbconnectca/ca.pb.go b/proto-public/pbconnectca/ca.pb.go index 23f1181fa391..46012b98febb 100644 --- a/proto-public/pbconnectca/ca.pb.go +++ b/proto-public/pbconnectca/ca.pb.go @@ -401,37 +401,37 @@ var file_pbconnectca_ca_proto_rawDesc = []byte{ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x73, 0x72, 0x22, 0x29, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x65, - 0x72, 0x74, 0x50, 0x65, 0x6d, 0x32, 0xec, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x43, 0x41, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x0a, 0x57, 0x61, + 0x72, 0x74, 0x50, 0x65, 0x6d, 0x32, 0xf0, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x43, 0x41, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x30, - 0x01, 0x12, 0x61, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x2e, - 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, - 0x04, 0x02, 0x08, 0x03, 0x42, 0xe9, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x42, 0x07, 0x43, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x43, 0xaa, 0x02, - 0x1a, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0xca, 0x02, 0x1a, 0x48, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0xe2, 0x02, 0x26, 0x48, 0x61, 0x73, 0x68, 0x69, - 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x63, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x1c, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x04, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x27, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, + 0x61, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, + 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x03, 0x42, 0xe9, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x42, 0x07, 0x43, 0x61, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2f, 0x70, 0x62, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0xa2, 0x02, 0x03, 0x48, + 0x43, 0x43, 0xaa, 0x02, 0x1a, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0xca, + 0x02, 0x1a, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x5c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0xe2, 0x02, 0x26, 0x48, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x63, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1c, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x63, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto-public/pbconnectca/ca.proto b/proto-public/pbconnectca/ca.proto index 3d4b857e5eca..238c63138e50 100644 --- a/proto-public/pbconnectca/ca.proto +++ b/proto-public/pbconnectca/ca.proto @@ -10,13 +10,19 @@ service ConnectCAService { // Connect CA roots. Current roots are sent immediately at the start of the // stream, and new lists will be sent whenever the roots are rotated. rpc WatchRoots(WatchRootsRequest) returns (stream WatchRootsResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_CONNECT_CA + }; } // Sign a leaf certificate for the service or agent identified by the SPIFFE // ID in the given CSR's SAN. rpc Sign(SignRequest) returns (SignResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_CONNECT_CA + }; } } diff --git a/proto-public/pbdataplane/dataplane.pb.go b/proto-public/pbdataplane/dataplane.pb.go index de9604416470..973d488e9db5 100644 --- a/proto-public/pbdataplane/dataplane.pb.go +++ b/proto-public/pbdataplane/dataplane.pb.go @@ -611,9 +611,9 @@ var file_pbdataplane_dataplane_proto_rawDesc = []byte{ 0x1c, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x41, 0x50, 0x49, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x06, 0x32, 0xde, 0x02, + 0x41, 0x50, 0x49, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x06, 0x32, 0xe2, 0x02, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x63, 0x65, 0x12, 0xae, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x40, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, @@ -623,33 +623,33 @@ var file_pbdataplane_dataplane_proto_rawDesc = []byte{ 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, - 0x02, 0x12, 0x9a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x42, 0x6f, - 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3a, 0x2e, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, - 0x76, 0x6f, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x42, - 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x42, 0xf0, - 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x42, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x44, 0xaa, - 0x02, 0x1a, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xca, 0x02, 0x1a, 0x48, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, - 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xe2, 0x02, 0x26, 0x48, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x44, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x1c, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, + 0x02, 0x10, 0x07, 0x12, 0x9c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x6f, 0x79, + 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x6f, + 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, + 0x10, 0x07, 0x42, 0xf0, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x42, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x2f, 0x70, 0x62, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xa2, 0x02, 0x03, + 0x48, 0x43, 0x44, 0xaa, 0x02, 0x1a, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0xca, 0x02, 0x1a, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xe2, 0x02, 0x26, + 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1c, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto-public/pbdataplane/dataplane.proto b/proto-public/pbdataplane/dataplane.proto index a1a685b0165d..93af418a7dab 100644 --- a/proto-public/pbdataplane/dataplane.proto +++ b/proto-public/pbdataplane/dataplane.proto @@ -89,10 +89,16 @@ message GetEnvoyBootstrapParamsResponse { service DataplaneService { rpc GetSupportedDataplaneFeatures(GetSupportedDataplaneFeaturesRequest) returns (GetSupportedDataplaneFeaturesResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_DATAPLANE + }; } rpc GetEnvoyBootstrapParams(GetEnvoyBootstrapParamsRequest) returns (GetEnvoyBootstrapParamsResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_DATAPLANE + }; } } diff --git a/proto-public/pbdns/dns.pb.go b/proto-public/pbdns/dns.pb.go index d4dcf6738719..5b211a02e940 100644 --- a/proto-public/pbdns/dns.pb.go +++ b/proto-public/pbdns/dns.pb.go @@ -196,26 +196,26 @@ var file_pbdns_dns_proto_rawDesc = []byte{ 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x02, 0x32, - 0x66, 0x0a, 0x0a, 0x44, 0x4e, 0x53, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, + 0x68, 0x0a, 0x0a, 0x44, 0x4e, 0x53, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x42, 0xc6, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x64, 0x6e, 0x73, 0x42, 0x08, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x64, 0x6e, 0x73, - 0xa2, 0x02, 0x03, 0x48, 0x43, 0x44, 0xaa, 0x02, 0x14, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x44, 0x6e, 0x73, 0xca, 0x02, 0x14, - 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x5c, 0x44, 0x6e, 0x73, 0xe2, 0x02, 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x44, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x44, 0x6e, 0x73, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x08, 0x42, 0xc6, 0x01, 0x0a, 0x18, 0x63, 0x6f, + 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x64, 0x6e, 0x73, 0x42, 0x08, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x64, + 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x44, 0xaa, 0x02, 0x14, 0x48, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x44, 0x6e, 0x73, 0xca, + 0x02, 0x14, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x5c, 0x44, 0x6e, 0x73, 0xe2, 0x02, 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x44, 0x6e, 0x73, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x48, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x44, + 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto-public/pbdns/dns.proto b/proto-public/pbdns/dns.proto index 8f09be179b37..d18187f6e741 100644 --- a/proto-public/pbdns/dns.proto +++ b/proto-public/pbdns/dns.proto @@ -9,7 +9,10 @@ option go_package = "github.com/hashicorp/consul/proto-public/pbdns"; service DNSService { // Query sends a DNS request over to Consul server and returns a DNS reply message. rpc Query(QueryRequest) returns (QueryResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_DNS + }; } } diff --git a/proto-public/pbresource/resource.pb.go b/proto-public/pbresource/resource.pb.go index f5804c3d89c1..0c90e0e8e23d 100644 --- a/proto-public/pbresource/resource.pb.go +++ b/proto-public/pbresource/resource.pb.go @@ -1296,62 +1296,62 @@ var file_pbresource_resource_proto_rawDesc = []byte{ 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, - 0x45, 0x10, 0x03, 0x32, 0xfa, 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, + 0x45, 0x10, 0x03, 0x32, 0x86, 0x05, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x26, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x12, 0x62, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x12, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x03, 0x12, 0x74, 0x0a, 0x0b, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x2e, 0x68, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, - 0x08, 0x03, 0x12, 0x5f, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, - 0x02, 0x08, 0x02, 0x12, 0x65, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x28, 0x2e, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x03, 0x12, 0x64, 0x0a, 0x05, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x12, 0x64, 0x0a, 0x05, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x30, 0x01, - 0x42, 0xe9, 0x01, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x0b, + 0x12, 0x76, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x2d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, + 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x0b, 0x12, 0x61, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x26, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x12, 0x67, 0x0a, 0x06, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, + 0x08, 0x03, 0x10, 0x0b, 0x12, 0x66, 0x0a, 0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, + 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x52, 0xaa, 0x02, - 0x19, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xca, 0x02, 0x19, 0x48, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xe2, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x63, 0x65, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x30, 0x01, 0x42, 0xe9, 0x01, 0x0a, + 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0d, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x52, 0xaa, 0x02, 0x19, 0x48, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xca, 0x02, 0x19, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x1b, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x3a, 0x3a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x65, 0xe2, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, 0x48, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto-public/pbresource/resource.proto b/proto-public/pbresource/resource.proto index 156b103e5e58..33aa527b7f9a 100644 --- a/proto-public/pbresource/resource.proto +++ b/proto-public/pbresource/resource.proto @@ -49,27 +49,45 @@ message WatchEvent { service ResourceService { rpc Read(ReadRequest) returns (ReadResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_RESOURCE + }; } rpc Write(WriteRequest) returns (WriteResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_RESOURCE + }; } rpc WriteStatus(WriteStatusRequest) returns (WriteStatusResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_RESOURCE + }; } rpc List(ListRequest) returns (ListResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_RESOURCE + }; } rpc Delete(DeleteRequest) returns (DeleteResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_RESOURCE + }; } rpc Watch(WatchRequest) returns (stream WatchResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_RESOURCE + }; } } diff --git a/proto-public/pbserverdiscovery/serverdiscovery.pb.go b/proto-public/pbserverdiscovery/serverdiscovery.pb.go index 3aa214877e77..77b2ec0b4ae2 100644 --- a/proto-public/pbserverdiscovery/serverdiscovery.pb.go +++ b/proto-public/pbserverdiscovery/serverdiscovery.pb.go @@ -210,9 +210,9 @@ var file_pbserverdiscovery_serverdiscovery_proto_rawDesc = []byte{ 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xa2, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xa4, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x87, 0x01, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x12, 0x89, 0x01, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, @@ -220,25 +220,26 @@ var file_pbserverdiscovery_serverdiscovery_proto_rawDesc = []byte{ 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x30, 0x01, 0x42, 0x9a, 0x02, 0x0a, 0x24, 0x63, - 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x79, 0x42, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x53, 0xaa, 0x02, 0x20, - 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0xca, 0x02, 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x79, 0xe2, 0x02, 0x2c, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x22, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x06, 0x30, 0x01, 0x42, 0x9a, 0x02, 0x0a, + 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0x42, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x70, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0xa2, 0x02, 0x03, 0x48, 0x43, 0x53, 0xaa, + 0x02, 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0xca, 0x02, 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0xe2, 0x02, 0x2c, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x22, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/proto-public/pbserverdiscovery/serverdiscovery.proto b/proto-public/pbserverdiscovery/serverdiscovery.proto index 3a7ecbdf91ef..9a13472a501e 100644 --- a/proto-public/pbserverdiscovery/serverdiscovery.proto +++ b/proto-public/pbserverdiscovery/serverdiscovery.proto @@ -13,7 +13,10 @@ service ServerDiscoveryService { // should be considered ready for sending general RPC requests towards that would // catalog queries, xDS proxy configurations and similar services. rpc WatchServers(WatchServersRequest) returns (stream WatchServersResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_SERVER_DISCOVERY + }; } } diff --git a/proto/private/pboperator/operator.pb.go b/proto/private/pboperator/operator.pb.go index c66f16795b16..80e7e6443edb 100644 --- a/proto/private/pboperator/operator.pb.go +++ b/proto/private/pboperator/operator.pb.go @@ -136,9 +136,9 @@ var file_private_pboperator_operator_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x32, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, 0xa3, 0x01, 0x0a, 0x0f, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, 0xa5, 0x01, 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x8f, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x64, + 0x91, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, @@ -146,26 +146,26 @@ var file_private_pboperator_operator_proto_rawDesc = []byte{ 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, - 0x01, 0x42, 0x99, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0d, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x34, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, 0x4f, 0xaa, 0x02, 0x22, 0x48, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0xca, - 0x02, 0x22, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0xe2, 0x02, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, - 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x5c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, + 0x01, 0x10, 0x0a, 0x42, 0x99, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0d, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, 0x4f, 0xaa, 0x02, 0x22, 0x48, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0xca, 0x02, 0x22, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0xe2, 0x02, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x25, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/private/pboperator/operator.proto b/proto/private/pboperator/operator.proto index db4d02d15403..1bd85d3c2882 100644 --- a/proto/private/pboperator/operator.proto +++ b/proto/private/pboperator/operator.proto @@ -8,7 +8,10 @@ import "annotations/ratelimit/ratelimit.proto"; service OperatorService { //Transfer raft leadership to another node rpc TransferLeader(TransferLeaderRequest) returns (TransferLeaderResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_EXEMPT}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_EXEMPT, + operation_category: OPERATION_CATEGORY_OPERATOR + }; } } diff --git a/proto/private/pbpeering/peering.pb.go b/proto/private/pbpeering/peering.pb.go index e5da2e7b83b4..183c63fb1ed6 100644 --- a/proto/private/pbpeering/peering.pb.go +++ b/proto/private/pbpeering/peering.pb.go @@ -2618,8 +2618,8 @@ var file_private_pbpeering_peering_proto_rawDesc = []byte{ 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x49, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, - 0x54, 0x45, 0x44, 0x10, 0x06, 0x32, 0x83, 0x09, 0x0a, 0x0e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x6e, + 0x54, 0x45, 0x44, 0x10, 0x06, 0x32, 0x94, 0x09, 0x0a, 0x0e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x47, @@ -2627,88 +2627,89 @@ var file_private_pbpeering_peering_proto_rawDesc = []byte{ 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, - 0x86, 0x04, 0x02, 0x08, 0x03, 0x12, 0x7e, 0x0a, 0x09, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x12, 0x33, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, - 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x73, 0x74, 0x61, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, - 0x86, 0x04, 0x02, 0x08, 0x03, 0x12, 0x84, 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x61, 0x64, 0x12, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, + 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x05, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x45, 0x73, 0x74, 0x61, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x33, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x12, 0x84, 0x01, 0x0a, - 0x0b, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, + 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x45, + 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x05, 0x12, 0x86, 0x01, 0x0a, 0x0b, 0x50, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x61, 0x64, 0x12, 0x35, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, + 0x02, 0x10, 0x05, 0x12, 0x86, 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, - 0x02, 0x08, 0x02, 0x12, 0x8a, 0x01, 0x0a, 0x0d, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x05, 0x12, 0x8c, 0x01, 0x0a, + 0x0d, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x03, - 0x12, 0x87, 0x01, 0x0a, 0x0c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x12, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x03, 0x12, 0xab, 0x01, 0x0a, 0x18, 0x54, - 0x72, 0x75, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x75, 0x73, + 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x05, 0x12, 0x89, 0x01, 0x0a, 0x0c, + 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, + 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x05, 0x12, 0xad, 0x01, 0x0a, 0x18, 0x54, 0x72, 0x75, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x68, 0x61, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xe2, + 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x05, 0x12, 0x92, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x39, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, - 0x54, 0x72, 0x75, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x12, 0x90, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x75, - 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x39, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x75, 0x73, - 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x42, 0x92, 0x02, 0x0a, 0x25, - 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x2f, 0x70, 0x62, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, - 0x50, 0xaa, 0x02, 0x21, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x21, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x5c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0xe2, 0x02, 0x2d, 0x48, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x48, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x05, 0x42, 0x92, 0x02, 0x0a, + 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x2f, 0x70, 0x62, 0x70, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0xa2, 0x02, 0x04, 0x48, 0x43, + 0x49, 0x50, 0xaa, 0x02, 0x21, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x21, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, + 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0xe2, 0x02, 0x2d, 0x48, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x48, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x50, 0x65, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/private/pbpeering/peering.proto b/proto/private/pbpeering/peering.proto index 3bd6daf7fb3a..88fcbac95eb3 100644 --- a/proto/private/pbpeering/peering.proto +++ b/proto/private/pbpeering/peering.proto @@ -10,38 +10,62 @@ import "private/pbcommon/common.proto"; // between disparate Consul clusters. service PeeringService { rpc GenerateToken(GenerateTokenRequest) returns (GenerateTokenResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_PEERING + }; } rpc Establish(EstablishRequest) returns (EstablishResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_PEERING + }; } rpc PeeringRead(PeeringReadRequest) returns (PeeringReadResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_PEERING + }; } rpc PeeringList(PeeringListRequest) returns (PeeringListResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_PEERING + }; } rpc PeeringDelete(PeeringDeleteRequest) returns (PeeringDeleteResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_PEERING + }; } // TODO(peering): As of writing, this method is only used in tests to set up Peerings in the state store. // Consider removing if we can find another way to populate state store in peering_endpoint_test.go rpc PeeringWrite(PeeringWriteRequest) returns (PeeringWriteResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_PEERING + }; } // TODO(peering): Rename this to PeeredServiceRoots? or something like that? rpc TrustBundleListByService(TrustBundleListByServiceRequest) returns (TrustBundleListByServiceResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_PEERING + }; } rpc TrustBundleRead(TrustBundleReadRequest) returns (TrustBundleReadResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_PEERING + }; } } diff --git a/proto/private/pbpeerstream/peerstream.pb.go b/proto/private/pbpeerstream/peerstream.pb.go index 35a03f0e3469..40b7ede6ee36 100644 --- a/proto/private/pbpeerstream/peerstream.pb.go +++ b/proto/private/pbpeerstream/peerstream.pb.go @@ -875,8 +875,8 @@ var file_private_pbpeerstream_peerstream_proto_rawDesc = []byte{ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, - 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x32, 0xbd, 0x02, 0x0a, 0x11, 0x50, 0x65, 0x65, 0x72, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x91, 0x01, 0x0a, + 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x32, 0xc1, 0x02, 0x0a, 0x11, 0x50, 0x65, 0x65, 0x72, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x38, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, @@ -885,36 +885,36 @@ var file_private_pbpeerstream_peerstream_proto_rawDesc = []byte{ 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x06, 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x28, 0x01, 0x30, 0x01, - 0x12, 0x93, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x12, 0x3b, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, - 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, - 0x70, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3c, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x02, 0x28, 0x01, + 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3b, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, + 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x08, 0xe2, 0x86, 0x04, 0x04, 0x08, 0x03, 0x10, 0x02, 0x42, 0xa7, 0x02, 0x0a, 0x28, 0x63, + 0x6f, 0x6d, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, - 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xe2, 0x86, 0x04, 0x02, 0x08, 0x03, 0x42, 0xa7, 0x02, 0x0a, 0x28, 0x63, 0x6f, 0x6d, 0x2e, 0x68, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x42, 0x0f, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, - 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x2f, 0x70, 0x62, 0x70, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xa2, 0x02, - 0x04, 0x48, 0x43, 0x49, 0x50, 0xaa, 0x02, 0x24, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, - 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xca, 0x02, 0x24, 0x48, - 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0xe2, 0x02, 0x30, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, - 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x27, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x0f, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, + 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x70, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0xa2, 0x02, 0x04, 0x48, 0x43, 0x49, 0x50, 0xaa, 0x02, 0x24, 0x48, 0x61, 0x73, 0x68, + 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2e, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0xca, 0x02, 0x24, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, + 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5c, 0x50, 0x65, 0x65, + 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xe2, 0x02, 0x30, 0x48, 0x61, 0x73, 0x68, 0x69, 0x63, + 0x6f, 0x72, 0x70, 0x5c, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x5c, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x5c, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x27, 0x48, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x3a, 0x3a, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x3a, 0x3a, 0x50, 0x65, 0x65, 0x72, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/private/pbpeerstream/peerstream.proto b/proto/private/pbpeerstream/peerstream.proto index 9dc4885d4b56..509749a30de0 100644 --- a/proto/private/pbpeerstream/peerstream.proto +++ b/proto/private/pbpeerstream/peerstream.proto @@ -20,13 +20,19 @@ service PeerStreamService { // buf:lint:ignore RPC_RESPONSE_STANDARD_NAME // buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE rpc StreamResources(stream ReplicationMessage) returns (stream ReplicationMessage) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_PEER_STREAM + }; } // ExchangeSecret is a unary RPC for exchanging the one-time establishment secret // for a long-lived stream secret. rpc ExchangeSecret(ExchangeSecretRequest) returns (ExchangeSecretResponse) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_WRITE}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_WRITE, + operation_category: OPERATION_CATEGORY_PEER_STREAM + }; } } diff --git a/proto/private/pbsubscribe/subscribe.pb.go b/proto/private/pbsubscribe/subscribe.pb.go index 3338e5c7e6ae..c6719a7de61a 100644 --- a/proto/private/pbsubscribe/subscribe.pb.go +++ b/proto/private/pbsubscribe/subscribe.pb.go @@ -1005,23 +1005,23 @@ var file_private_pbsubscribe_subscribe_proto_rawDesc = []byte{ 0x41, 0x50, 0x49, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0x0d, 0x2a, 0x29, 0x0a, 0x09, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x70, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0x01, 0x32, 0x5f, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0x01, 0x32, 0x61, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, + 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x06, - 0xe2, 0x86, 0x04, 0x02, 0x08, 0x02, 0x30, 0x01, 0x42, 0x9a, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x42, 0x0e, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0xca, 0x02, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0xe2, 0x02, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x08, + 0xe2, 0x86, 0x04, 0x04, 0x08, 0x02, 0x10, 0x09, 0x30, 0x01, 0x42, 0x9a, 0x01, 0x0a, 0x0d, 0x63, + 0x6f, 0x6d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x42, 0x0e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, + 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x62, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0xca, 0x02, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0xe2, 0x02, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/private/pbsubscribe/subscribe.proto b/proto/private/pbsubscribe/subscribe.proto index 8bd6a3864a4d..8067d2060bbb 100644 --- a/proto/private/pbsubscribe/subscribe.proto +++ b/proto/private/pbsubscribe/subscribe.proto @@ -40,7 +40,10 @@ service StateChangeSubscription { // because the server state was restored from a snapshot. // buf:lint:ignore RPC_RESPONSE_STANDARD_NAME rpc Subscribe(SubscribeRequest) returns (stream Event) { - option (hashicorp.consul.internal.ratelimit.spec) = {operation_type: OPERATION_TYPE_READ}; + option (hashicorp.consul.internal.ratelimit.spec) = { + operation_type: OPERATION_TYPE_READ, + operation_category: OPERATION_CATEGORY_SUBSCRIBE + }; } } From 0b4dc2574e3754160ef74d5c946aedd556eb0347 Mon Sep 17 00:00:00 2001 From: Tu Nguyen Date: Mon, 20 Mar 2023 09:27:29 -0700 Subject: [PATCH 15/30] Update GH actions to create Jira issue automatically (#16656) --- .github/workflows/jira-issues.yaml | 20 ++++++++++++++++++++ .github/workflows/jira-pr.yaml | 16 ++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index 07b71e83d47a..ecda1dddf808 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -54,6 +54,26 @@ jobs: JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + # Education Jira + - name: Create ticket in Education board an issue is filed, or if PR not by a team member is opened + if: github.event.action == 'opened' && ("${{ contains(github.event.issue.labels.*.name, 'type/docs') }}" == "true") + uses: tomhjp/gh-action-jira-create@v0.2.0 + with: + project: CE + issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" + summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" + description: "${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" + # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) + extraFields: '{ "customfield_10089": "${{ github.event.issue.html_url || github.event.pull_request.html_url }}", + "customfield_10371": { "value": "GitHub" }, + "customfield_10535": [{ "value": "Service Mesh" }], + "components": [{ "name": "${{ github.event.repository.name }}" }], + "labels": ${{ steps.set-ticket-labels.outputs.LABELS }} }' + env: + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + - name: Search if: github.event.action != 'opened' id: search diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index 706efa61a4be..b083e58fe163 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -72,6 +72,22 @@ jobs: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + + # Education Jira + - name: Create ticket in Education board an issue is filed, or if PR not by a team member is opened + if: github.event.action == 'opened' && ("${{ contains(github.event.issue.labels.*.name, 'type/docs') }}" == "true") + uses: tomhjp/gh-action-jira-create@v0.2.0 + with: + project: CE + issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" + summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" + description: "${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" + # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) + extraFields: '{ "customfield_10089": "${{ github.event.issue.html_url || github.event.pull_request.html_url }}", + "customfield_10371": { "value": "GitHub" }, + "customfield_10535": [{ "value": "Service Mesh" }], + "components": [{ "name": "${{ github.event.repository.name }}" }], + "labels": ${{ steps.set-ticket-labels.outputs.LABELS }} }' - name: Search if: github.event.action != 'opened' From 606f8fbbab6e7a92126f4d59cac51ece12b74f02 Mon Sep 17 00:00:00 2001 From: Melisa Griffin Date: Mon, 20 Mar 2023 12:37:30 -0400 Subject: [PATCH 16/30] Adds check to verify that the API Gateway is being created with at least one listener --- .changelog/16649.txt | 3 +++ agent/structs/config_entry_discoverychain_test.go | 13 +++++++++++-- agent/structs/config_entry_gateways.go | 3 +++ agent/structs/config_entry_gateways_test.go | 7 +++++++ website/content/commands/config/delete.mdx | 9 +++++---- website/content/commands/config/list.mdx | 1 + website/content/commands/config/read.mdx | 1 + website/content/commands/config/write.mdx | 1 + 8 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 .changelog/16649.txt diff --git a/.changelog/16649.txt b/.changelog/16649.txt new file mode 100644 index 000000000000..e510558ff907 --- /dev/null +++ b/.changelog/16649.txt @@ -0,0 +1,3 @@ +```release-note:bug +gateways: Adds validation to ensure the API Gateway has a listener defined when created +``` \ No newline at end of file diff --git a/agent/structs/config_entry_discoverychain_test.go b/agent/structs/config_entry_discoverychain_test.go index cb6a6581d86a..f41c247c6dd2 100644 --- a/agent/structs/config_entry_discoverychain_test.go +++ b/agent/structs/config_entry_discoverychain_test.go @@ -410,8 +410,17 @@ func TestConfigEntries_ListRelatedServices_AndACLs(t *testing.T) { }, }, { - name: "api-gateway", - entry: &APIGatewayConfigEntry{Name: "test"}, + name: "api-gateway", + entry: &APIGatewayConfigEntry{ + Name: "test", + Listeners: []APIGatewayListener{ + { + Name: "test", + Port: 100, + Protocol: "http", + }, + }, + }, expectACLs: []testACL{ { name: "no-authz", diff --git a/agent/structs/config_entry_gateways.go b/agent/structs/config_entry_gateways.go index 885a301fc467..5309af35ad3d 100644 --- a/agent/structs/config_entry_gateways.go +++ b/agent/structs/config_entry_gateways.go @@ -769,6 +769,9 @@ func (e *APIGatewayConfigEntry) Validate() error { return err } + if len(e.Listeners) == 0 { + return fmt.Errorf("api gateway must have at least one listener") + } if err := e.validateListenerNames(); err != nil { return err } diff --git a/agent/structs/config_entry_gateways_test.go b/agent/structs/config_entry_gateways_test.go index ca68ea4f40a5..1302cb2ad7ad 100644 --- a/agent/structs/config_entry_gateways_test.go +++ b/agent/structs/config_entry_gateways_test.go @@ -1126,6 +1126,13 @@ func TestGatewayService_Addresses(t *testing.T) { func TestAPIGateway_Listeners(t *testing.T) { cases := map[string]configEntryTestcase{ + "no listeners defined": { + entry: &APIGatewayConfigEntry{ + Kind: "api-gateway", + Name: "api-gw-one", + }, + validateErr: "api gateway must have at least one listener", + }, "listener name conflict": { entry: &APIGatewayConfigEntry{ Kind: "api-gateway", diff --git a/website/content/commands/config/delete.mdx b/website/content/commands/config/delete.mdx index 3fc9e6618b08..134d6885e666 100644 --- a/website/content/commands/config/delete.mdx +++ b/website/content/commands/config/delete.mdx @@ -27,6 +27,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint | Config Entry Kind | Required ACL | | ------------------- | ------------------ | +| api-gateway | `mesh:write` | | ingress-gateway | `operator:write` | | proxy-defaults | `operator:write` | | service-defaults | `service:write` | @@ -45,16 +46,16 @@ Usage: `consul config delete [options]` - `-kind` - Specifies the kind of the config entry to read. - `-name` - Specifies the name of the config entry to delete. The name of the - `proxy-defaults` config entry must be `global`, and the name of the `mesh` - config entry must be `mesh`. +`proxy-defaults` config entry must be `global`, and the name of the `mesh` +config entry must be `mesh`. - `-filename` - Specifies the file describing the config entry to delete. - `-cas` - Perform a Check-And-Set operation. Specifying this value also - requires the -modify-index flag to be set. The default value is false. +requires the -modify-index flag to be set. The default value is false. - `-modify-index=` - Unsigned integer representing the ModifyIndex of the - config entry. This is used in combination with the -cas flag. +config entry. This is used in combination with the -cas flag. #### Enterprise Options diff --git a/website/content/commands/config/list.mdx b/website/content/commands/config/list.mdx index c72e3e903de4..1a70af178725 100644 --- a/website/content/commands/config/list.mdx +++ b/website/content/commands/config/list.mdx @@ -27,6 +27,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint | Config Entry Kind | Required ACL | | ------------------- | ----------------- | +| api-gateway | `mesh:read` | | ingress-gateway | `service:read` | | proxy-defaults | `` | | service-defaults | `service:read` | diff --git a/website/content/commands/config/read.mdx b/website/content/commands/config/read.mdx index a50574aaed7e..7a49482c5b3f 100644 --- a/website/content/commands/config/read.mdx +++ b/website/content/commands/config/read.mdx @@ -28,6 +28,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint | Config Entry Kind | Required ACL | | ------------------- | ----------------- | +| api-gateway | `mesh:read` | | ingress-gateway | `service:read` | | proxy-defaults | `` | | service-defaults | `service:read` | diff --git a/website/content/commands/config/write.mdx b/website/content/commands/config/write.mdx index 7e586aff759a..24e17aa34ae4 100644 --- a/website/content/commands/config/write.mdx +++ b/website/content/commands/config/write.mdx @@ -30,6 +30,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint | Config Entry Kind | Required ACL | | ------------------- | ------------------ | +| api-gateway | `mesh:write` | | ingress-gateway | `operator:write` | | proxy-defaults | `operator:write` | | service-defaults | `service:write` | From 1ef9f4dade439f443ad5cb159f6510cdcc6ac264 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 20 Mar 2023 12:42:30 -0400 Subject: [PATCH 17/30] Fix route subscription when using namespaces (#16677) * Fix route subscription when using namespaces * Update changelog * Fix changelog entry to reference that the bug was enterprise only --- .changelog/_16677.txt | 3 +++ agent/proxycfg/api_gateway.go | 15 ++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 .changelog/_16677.txt diff --git a/.changelog/_16677.txt b/.changelog/_16677.txt new file mode 100644 index 000000000000..0bf621f09ac4 --- /dev/null +++ b/.changelog/_16677.txt @@ -0,0 +1,3 @@ +```release-note:bug +gateway: **(Enterprise only)** Fix bug where routes defined in a different namespace than a gateway would fail to register. [[GH-16677](https://github.com/hashicorp/consul/pull/16677)]. +``` diff --git a/agent/proxycfg/api_gateway.go b/agent/proxycfg/api_gateway.go index c5a44f17c6cc..e092f6328f4b 100644 --- a/agent/proxycfg/api_gateway.go +++ b/agent/proxycfg/api_gateway.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "github.com/hashicorp/consul/acl" cachetype "github.com/hashicorp/consul/agent/cache-types" "github.com/hashicorp/consul/agent/proxycfg/internal/watch" "github.com/hashicorp/consul/agent/structs" @@ -45,13 +46,13 @@ func (h *handlerAPIGateway) initialize(ctx context.Context) (ConfigSnapshot, err } // Watch the api-gateway's config entry - err = h.subscribeToConfigEntry(ctx, structs.APIGateway, h.service, gatewayConfigWatchID) + err = h.subscribeToConfigEntry(ctx, structs.APIGateway, h.service, h.proxyID.EnterpriseMeta, gatewayConfigWatchID) if err != nil { return snap, err } // Watch the bound-api-gateway's config entry - err = h.subscribeToConfigEntry(ctx, structs.BoundAPIGateway, h.service, gatewayConfigWatchID) + err = h.subscribeToConfigEntry(ctx, structs.BoundAPIGateway, h.service, h.proxyID.EnterpriseMeta, gatewayConfigWatchID) if err != nil { return snap, err } @@ -80,13 +81,13 @@ func (h *handlerAPIGateway) initialize(ctx context.Context) (ConfigSnapshot, err return snap, nil } -func (h *handlerAPIGateway) subscribeToConfigEntry(ctx context.Context, kind, name, watchID string) error { +func (h *handlerAPIGateway) subscribeToConfigEntry(ctx context.Context, kind, name string, entMeta acl.EnterpriseMeta, watchID string) error { return h.dataSources.ConfigEntry.Notify(ctx, &structs.ConfigEntryQuery{ Kind: kind, Name: name, Datacenter: h.source.Datacenter, QueryOptions: structs.QueryOptions{Token: h.token}, - EnterpriseMeta: h.proxyID.EnterpriseMeta, + EnterpriseMeta: entMeta, }, watchID, h.ch) } @@ -172,7 +173,7 @@ func (h *handlerAPIGateway) handleGatewayConfigUpdate(ctx context.Context, u Upd return fmt.Errorf("unexpected route kind on gateway: %s", ref.Kind) } - err := h.subscribeToConfigEntry(ctx, ref.Kind, ref.Name, routeConfigWatchID) + err := h.subscribeToConfigEntry(ctx, ref.Kind, ref.Name, ref.EnterpriseMeta, routeConfigWatchID) if err != nil { // TODO May want to continue return err @@ -185,7 +186,7 @@ func (h *handlerAPIGateway) handleGatewayConfigUpdate(ctx context.Context, u Upd seenRefs[ref] = struct{}{} snap.APIGateway.Certificates.InitWatch(ref, cancel) - err := h.subscribeToConfigEntry(ctx, ref.Kind, ref.Name, inlineCertificateConfigWatchID) + err := h.subscribeToConfigEntry(ctx, ref.Kind, ref.Name, ref.EnterpriseMeta, inlineCertificateConfigWatchID) if err != nil { // TODO May want to continue return err @@ -391,7 +392,7 @@ func (h *handlerAPIGateway) handleRouteConfigUpdate(ctx context.Context, u Updat snap.APIGateway.Upstreams.set(ref, listener, set) } snap.APIGateway.UpstreamsSet.set(ref, seenUpstreamIDs) - //snap.APIGateway.Hosts = TODO + // snap.APIGateway.Hosts = TODO snap.APIGateway.AreHostsSet = true // Stop watching any upstreams and discovery chains that have become irrelevant From b9bd2c3780e98e0cda748ed7331c62917d5204a4 Mon Sep 17 00:00:00 2001 From: Nitya Dhanushkodi Date: Mon, 20 Mar 2023 10:00:29 -0700 Subject: [PATCH 18/30] peering: peering partition failover fixes (#16673) add local source partition for peered upstreams --- .changelog/16673.txt | 3 +++ agent/proxycfg/upstreams.go | 3 +++ agent/xds/clusters.go | 6 ++++++ 3 files changed, 12 insertions(+) create mode 100644 .changelog/16673.txt diff --git a/.changelog/16673.txt b/.changelog/16673.txt new file mode 100644 index 000000000000..f72eedc61c82 --- /dev/null +++ b/.changelog/16673.txt @@ -0,0 +1,3 @@ +```release-note:bug +peering: Fixes a bug where the importing partition was not added to peered failover targets, which causes issues when the importing partition is a non-default partition. +``` diff --git a/agent/proxycfg/upstreams.go b/agent/proxycfg/upstreams.go index 30fe43280586..21db259233b7 100644 --- a/agent/proxycfg/upstreams.go +++ b/agent/proxycfg/upstreams.go @@ -470,6 +470,9 @@ func (s *handlerUpstreams) watchUpstreamTarget(ctx context.Context, snap *Config if opts.peer != "" { uid = NewUpstreamIDFromTargetID(opts.chainID) + // chainID has the partition stripped. However, when a target is in a cluster peer, the partition should be set + // to the local partition (i.e chain.Partition), since the peered target is imported into the local partition. + uid.OverridePartition(opts.entMeta.PartitionOrDefault()) correlationID = upstreamPeerWatchIDPrefix + uid.String() } diff --git a/agent/xds/clusters.go b/agent/xds/clusters.go index 9a296d2a8517..f3c85ee18e48 100644 --- a/agent/xds/clusters.go +++ b/agent/xds/clusters.go @@ -1957,11 +1957,17 @@ func (s *ResourceGenerator) mapDiscoChainTargets(cfgSnap *proxycfg.ConfigSnapsho } if targetUID.Peer != "" { + // targetID has the partition stripped, so targetUID will not have a partition either. However, + // when a failover target is in a cluster peer, the partition should be set to the local partition (i.e + // chain.Partition), since the peered failover target is imported into the local partition. + targetUID.OverridePartition(chain.Partition) + tbs, _ := upstreamsSnapshot.UpstreamPeerTrustBundles.Get(targetUID.Peer) rootPEMs = tbs.ConcatenatedRootPEMs() peerMeta, found := upstreamsSnapshot.UpstreamPeerMeta(targetUID) if !found { + s.Logger.Warn("failed to fetch upstream peering metadata", "target", targetUID) continue } sni = peerMeta.PrimarySNI() From b4598a76b7bfe320aff2f26cc59571ae1eebb5f4 Mon Sep 17 00:00:00 2001 From: Tu Nguyen Date: Mon, 20 Mar 2023 10:01:56 -0700 Subject: [PATCH 19/30] fix jira sync actions, remove custom fields (#16686) --- .github/workflows/jira-issues.yaml | 7 ++----- .github/workflows/jira-pr.yaml | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index ecda1dddf808..fdf25eedee0c 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -62,12 +62,9 @@ jobs: project: CE issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" - description: "${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" + description: "GitHub URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url }}\n\n${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) - extraFields: '{ "customfield_10089": "${{ github.event.issue.html_url || github.event.pull_request.html_url }}", - "customfield_10371": { "value": "GitHub" }, - "customfield_10535": [{ "value": "Service Mesh" }], - "components": [{ "name": "${{ github.event.repository.name }}" }], + extraFields: '{ "components": [{ "name": "${{ github.event.repository.name }}" }], "labels": ${{ steps.set-ticket-labels.outputs.LABELS }} }' env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index b083e58fe163..8f2f28481186 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -81,12 +81,9 @@ jobs: project: CE issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" - description: "${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" + description: "GitHub URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url }}\n\n${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) - extraFields: '{ "customfield_10089": "${{ github.event.issue.html_url || github.event.pull_request.html_url }}", - "customfield_10371": { "value": "GitHub" }, - "customfield_10535": [{ "value": "Service Mesh" }], - "components": [{ "name": "${{ github.event.repository.name }}" }], + extraFields: '{ "components": [{ "name": "${{ github.event.repository.name }}" }], "labels": ${{ steps.set-ticket-labels.outputs.LABELS }} }' - name: Search From e39e7d126120c53040470e99c74a4838f9dcdb3f Mon Sep 17 00:00:00 2001 From: Tu Nguyen Date: Mon, 20 Mar 2023 10:19:43 -0700 Subject: [PATCH 20/30] Docs/update jira sync pr issue (#16688) * fix jira sync actions, remove custom fields * remove more additional fields, debug --- .github/workflows/jira-issues.yaml | 4 ++-- .github/workflows/jira-pr.yaml | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index fdf25eedee0c..2164243cde53 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -64,8 +64,8 @@ jobs: summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" description: "GitHub URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url }}\n\n${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) - extraFields: '{ "components": [{ "name": "${{ github.event.repository.name }}" }], - "labels": ${{ steps.set-ticket-labels.outputs.LABELS }} }' + extraFields: '{ "components": [{ "name": "${{ github.event.repository.name }}" }] }' + env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index 8f2f28481186..b0d5ca4aef87 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -83,8 +83,7 @@ jobs: summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" description: "GitHub URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url }}\n\n${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) - extraFields: '{ "components": [{ "name": "${{ github.event.repository.name }}" }], - "labels": ${{ steps.set-ticket-labels.outputs.LABELS }} }' + extraFields: '{ "components": [{ "name": "${{ github.event.repository.name }}" }] }' - name: Search if: github.event.action != 'opened' From cb26004b715d9c5937299a49ea87bada0b4feaa7 Mon Sep 17 00:00:00 2001 From: Tu Nguyen Date: Mon, 20 Mar 2023 10:40:27 -0700 Subject: [PATCH 21/30] Docs: Jira sync Update issuetype to bug (#16689) * update issuetype to bug * fix conditional for pr edu --- .github/workflows/jira-issues.yaml | 2 +- .github/workflows/jira-pr.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index 2164243cde53..f0ba443bb3ee 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -60,7 +60,7 @@ jobs: uses: tomhjp/gh-action-jira-create@v0.2.0 with: project: CE - issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" + issuetype: "Bug" summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" description: "GitHub URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url }}\n\n${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index b0d5ca4aef87..de0ea67f388f 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -75,11 +75,11 @@ jobs: # Education Jira - name: Create ticket in Education board an issue is filed, or if PR not by a team member is opened - if: github.event.action == 'opened' && ("${{ contains(github.event.issue.labels.*.name, 'type/docs') }}" == "true") + if: github.event.action == 'opened' && steps.is-team-member.outputs.MESSAGE == 'false' && ("${{ contains(github.event.issue.labels.*.name, 'type/docs') }}" == "true") uses: tomhjp/gh-action-jira-create@v0.2.0 with: project: CE - issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" + issuetype: "Bug" summary: "${{ github.event.repository.name }} [${{ steps.set-ticket-type.outputs.TYPE }} #${{ github.event.issue.number }}]: ${{ github.event.issue.title }}" description: "GitHub URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url }}\n\n${{ github.event.issue.body || github.event.pull_request.body }}\n\n_Created in GitHub by ${{ github.actor }}._" # customfield_10089 is "Issue Link", customfield_10371 is "Source" (use JIRA API to retrieve) From 46af09b09e845eb55d21e8a760e1695928c8e670 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 18:19:00 +0000 Subject: [PATCH 22/30] build(deps): bump tomhjp/gh-action-jira-create from 0.2.0 to 0.2.1 (#16685) Bumps [tomhjp/gh-action-jira-create](https://github.com/tomhjp/gh-action-jira-create) from 0.2.0 to 0.2.1. - [Release notes](https://github.com/tomhjp/gh-action-jira-create/releases) - [Commits](https://github.com/tomhjp/gh-action-jira-create/compare/v0.2.0...v0.2.1) --- updated-dependencies: - dependency-name: tomhjp/gh-action-jira-create dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Yu --- .github/workflows/jira-issues.yaml | 4 ++-- .github/workflows/jira-pr.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index f0ba443bb3ee..79301a95b6b4 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -37,7 +37,7 @@ jobs: - name: Create ticket if an issue is filed, or if PR not by a team member is opened if: github.event.action == 'opened' - uses: tomhjp/gh-action-jira-create@v0.2.0 + uses: tomhjp/gh-action-jira-create@v0.2.1 with: project: NET issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" @@ -57,7 +57,7 @@ jobs: # Education Jira - name: Create ticket in Education board an issue is filed, or if PR not by a team member is opened if: github.event.action == 'opened' && ("${{ contains(github.event.issue.labels.*.name, 'type/docs') }}" == "true") - uses: tomhjp/gh-action-jira-create@v0.2.0 + uses: tomhjp/gh-action-jira-create@v0.2.1 with: project: CE issuetype: "Bug" diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index de0ea67f388f..1f2943c75c2e 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -56,7 +56,7 @@ jobs: - name: Create ticket if an issue is filed, or if PR not by a team member is opened if: ( github.event.action == 'opened' && steps.is-team-member.outputs.MESSAGE == 'false' ) - uses: tomhjp/gh-action-jira-create@v0.2.0 + uses: tomhjp/gh-action-jira-create@v0.2.1 with: project: NET issuetype: "${{ steps.set-ticket-type.outputs.TYPE }}" @@ -76,7 +76,7 @@ jobs: # Education Jira - name: Create ticket in Education board an issue is filed, or if PR not by a team member is opened if: github.event.action == 'opened' && steps.is-team-member.outputs.MESSAGE == 'false' && ("${{ contains(github.event.issue.labels.*.name, 'type/docs') }}" == "true") - uses: tomhjp/gh-action-jira-create@v0.2.0 + uses: tomhjp/gh-action-jira-create@v0.2.1 with: project: CE issuetype: "Bug" From 4f445a7378f5fad8404e9a12e3b97d8aa1b1db8b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 18:24:18 +0000 Subject: [PATCH 23/30] build(deps): bump tomhjp/gh-action-jira-comment from 0.1.0 to 0.2.0 (#16684) Bumps [tomhjp/gh-action-jira-comment](https://github.com/tomhjp/gh-action-jira-comment) from 0.1.0 to 0.2.0. - [Release notes](https://github.com/tomhjp/gh-action-jira-comment/releases) - [Commits](https://github.com/tomhjp/gh-action-jira-comment/compare/v0.1.0...v0.2.0) --- updated-dependencies: - dependency-name: tomhjp/gh-action-jira-comment dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Yu --- .github/workflows/jira-issues.yaml | 2 +- .github/workflows/jira-pr.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/jira-issues.yaml b/.github/workflows/jira-issues.yaml index 79301a95b6b4..93e8710afa62 100644 --- a/.github/workflows/jira-issues.yaml +++ b/.github/workflows/jira-issues.yaml @@ -81,7 +81,7 @@ jobs: - name: Sync comment if: github.event.action == 'created' && steps.search.outputs.issue - uses: tomhjp/gh-action-jira-comment@v0.1.0 + uses: tomhjp/gh-action-jira-comment@v0.2.0 with: issue: ${{ steps.search.outputs.issue }} comment: "${{ github.actor }} ${{ github.event.review.state || 'commented' }}:\n\n${{ github.event.comment.body || github.event.review.body }}\n\n${{ github.event.comment.html_url || github.event.review.html_url }}" diff --git a/.github/workflows/jira-pr.yaml b/.github/workflows/jira-pr.yaml index 1f2943c75c2e..7537c773126f 100644 --- a/.github/workflows/jira-pr.yaml +++ b/.github/workflows/jira-pr.yaml @@ -95,7 +95,7 @@ jobs: - name: Sync comment if: github.event.action == 'created' && steps.search.outputs.issue - uses: tomhjp/gh-action-jira-comment@v0.1.0 + uses: tomhjp/gh-action-jira-comment@v0.2.0 with: issue: ${{ steps.search.outputs.issue }} comment: "${{ github.actor }} ${{ github.event.review.state || 'commented' }}:\n\n${{ github.event.comment.body || github.event.review.body }}\n\n${{ github.event.comment.html_url || github.event.review.html_url }}" From 0fc8a3efa7a33d80022089434013984f53f79c00 Mon Sep 17 00:00:00 2001 From: Anita Akaeze Date: Mon, 20 Mar 2023 14:26:43 -0400 Subject: [PATCH 24/30] NET-2397: Add readme.md to upgrade test subdirectory (#16610) * NET-2397: Add readme.md to upgrade test subdirectory * remove test code * fix link and update steps of adding new test cases (#16654) * fix link and update steps of adding new test cases * Apply suggestions from code review Co-authored-by: Nick Irvine <115657443+nfi-hashicorp@users.noreply.github.com> --------- Co-authored-by: Nick Irvine <115657443+nfi-hashicorp@users.noreply.github.com> --------- Co-authored-by: cskh Co-authored-by: Nick Irvine <115657443+nfi-hashicorp@users.noreply.github.com> --- docs/README.md | 1 + .../consul-container/test/upgrade/README.md | 179 +++++++++++++++++- .../test/util/upgrade_tests_workflow.png | Bin 0 -> 511431 bytes 3 files changed, 175 insertions(+), 5 deletions(-) create mode 100644 test/integration/consul-container/test/util/upgrade_tests_workflow.png diff --git a/docs/README.md b/docs/README.md index 0c24ff8f9920..8f0be780011f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -38,6 +38,7 @@ Also see the [FAQ](./faq.md). ## Other Docs 1. [Integration Tests](../test/integration/connect/envoy/README.md) +1. [Upgrade Tests](../test/integration/consul-container/test/upgrade/README.md) ## Important Directories diff --git a/test/integration/consul-container/test/upgrade/README.md b/test/integration/consul-container/test/upgrade/README.md index adffc5344ad3..6815323af0df 100644 --- a/test/integration/consul-container/test/upgrade/README.md +++ b/test/integration/consul-container/test/upgrade/README.md @@ -1,17 +1,186 @@ -# Consul Upgrade Integration tests +# Upgrade Integration Tests -## Local run +- [Introduction](#introduction) + - [How it works](#how-it-works) +- [Getting Started](#getting-started) + - [Prerequisites](#prerequisites) + - [Running Upgrade integration tests](#running-upgrade-integration-tests) +- [Adding a new upgrade integration test](#adding-a-new-upgrade-integration-test) + - [Errors Test Cases](#errors-test-cases) +- [FAQS](#faqs) + + +## Introduction + +The goal of upgrade tests is to ensure problem-free upgrades on supported upgrade paths. At any given time, Consul supports the latest minor release, and two older minor releases, e.g. 1.15, 1.14, and 1.13. Upgrades to any higher version are permitted, including skipping a minor version e.g. from 1.13 to 1.15. + +The upgrade tests also aims to highlight errors that may occur as users attempt to upgrade their current version to a newer version. + +### How it works + +This diagram illustrates the deployment architecture of an upgrade test, where +two consul agents (one server and one client), a static-server, static-client, +and envoy sidecars are deployed. + +isolated + +> Note that all consul agents and user workloads such as application services, mesh-gateway are running in docker containers. + +In general, each upgrade test has following steps: +1. Create a cluster with a specified number of server and client agents, then enable the feature to be tested. +2. Create some workload in the cluster, e.g., registering 2 services: static-server, static-client. +Static-server is a simple http application and the upstream service of static-client. +3. Make additional configuration to the cluster. For example, configure Consul intention to deny +connection between static client and server. Ensure that a connection cannot be made. +4. Upgrade Consul cluster to the `target-version` and restart the Envoy sidecars +(we restart Envoy sidecar to ensure the upgraded Consul binary can read the state from +the previous version and generate the correct Envoy configurations) +5. Re-validate the client, server and sidecars to ensure the persisted data from the pervious +version can be accessed in the target version. Verify connection / disconnection +(e.g., deny Action) + +## Getting Started +### Prerequisites +To run the upgrade test, the following tools are required: +- install [Go](https://go.dev/) (the version should match that of our CI config's Go image). +- install [`golangci-lint`](https://golangci-lint.run/usage/install/) +- install [`Makefile`](https://www.gnu.org/software/make/manual/make.html) +- [`Docker`](https://docs.docker.com/get-docker/) required to run tests locally + +### Running Upgrade integration tests - run `make dev-docker` -- run the tests, e.g., `go test -run ^TestBasicConnectService$ ./test/basic -v` +- run the single test `go test -v -timeout 30m -run ^TestACL_Upgrade_Node_Token$ ./.../upgrade/` +- run all upgrade tests `go test -v -timeout 30m -run ./.../upgrade` -To specify targets and latest image pass `target-version` and `latest-version` +To specify targets and latest image pass `--target-version` and `--latest-version` to the tests. By default, it uses the `consul` docker image with respectively `local` and `latest` tags. To use dev consul image, pass `target-image` and `target-version`: - -target-image hashicorppreview/consul -target-version 1.14-dev + -target-image hashicorppreview/consul -target-version 1.15-dev By default, all container's logs are written to either `stdout`, or `stderr`; this makes it hard to debug, when the test case creates many containers. To disable following container logs, run the test with `-follow-log false`. + +Below are the supported CLI options +| Flags | Default value | Description | +| ----------- | ----------- | ----------- | +| --latest-image | `consul` in OSS, `hashicorp/consulenterprise` in ENT | Name of the Docker image to deploy initially. +| --latest-version | latest | Tag of the Docker image to deploy initially. +| --target-image | `consul` in OSS, `hashicorp/consulenterprise` in ENT | Name of the Docker image to upgrade to. +| --target-version | local | Tag of the Docker image to upgrade to. `local` is the tag built by `make dev-docker` above. +| -follow-log | true | Emit all container logs. These can be noisy, so we recommend `--follow-log=false` for local development. + + +## Adding a new upgrade integration test + +All upgrade tests are defined in [test/integration/consul-container/test/upgrade](/test/integration/consul-container/test/upgrade) subdirectory. The test framework uses +[functional table-driven tests in Go](https://yourbasic.org/golang/table-driven-unit-test/) and +using function types to modify the basic configuration for each test case. + +Following is a guide for adding a new upgrade test case. +1. Create consul cluster(s) with a specified version. Some utility functions are provided to make +a single cluster or two peered clusters: + +```go + // NewCluster creates a single cluster + cluster, _, _ := libtopology.NewCluster(t, &libtopology.ClusterConfig{ + NumServers: 1, + NumClients: 1, + BuildOpts: &libcluster.BuildOptions{ + Datacenter: "dc1", + ConsulVersion: oldVersion, + }, + }) + + // BasicPeeringTwoClustersSetup creates two peered clusters, named accpeting and dialing + accepting, dialing := libtopology.BasicPeeringTwoClustersSetup(t, oldVersion, false) +``` + +2. For tests with multiple test cases, it should always start by invoking +```go + type testcase struct { + name string + create func() + extraAssertion func() + } +``` +see example [here](./l7_traffic_management/resolver_default_subset_test.go). For upgrade tests with a single test case, they can be written like +```go + run := func(t *testing.T, oldVersion, targetVersion string) { + // insert test + } + t.Run(fmt.Sprintf("Upgrade from %s to %s", utils.LatestVersion, utils.TargetVersion), + func(t *testing.T) { + run(t, utils.LatestVersion, utils.TargetVersion) + }) +``` +see example [here](./acl_node_test.go) + +Addtitional configurations or user-workload can be created with a customized [`create` function](./l7_traffic_management/resolver_default_subset_test.go). + +3. Call the upgrade method and assert the upgrading cluster succeeds. +We also restart the envoy proxy to make sure the upgraded agent can generate +the correct envoy configurations. + +```go + err = cluster.StandardUpgrade(t, context.Background(), targetVersion) + require.NoError(t, err) + require.NoError(t, staticServerConnectProxy.Restart()) + require.NoError(t, staticClientConnectProxy.Restart()) +``` + +4. Verify the user workload after upgrade, e.g., + +```go + libassert.HTTPServiceEchoes(t, "localhost", port, "") + libassert.AssertFortioName(t, fmt.Sprintf("http://localhost:%d", appPort), "static-server-2-v2", "") +``` + +### Errors Test Cases +There are some caveats for special error handling of versions prior to `1.14`. +Upgrade tests for features such peering, had API changes that returns an error if attempt to upgrade, and should be accounted for in upgrade tests. If running upgrade tests for any version before `1.14`, the following lines of code needs to be added to skip test or it will not pass. + +```go + fromVersion, err := version.NewVersion(utils.LatestVersion) + require.NoError(t, err) + if fromVersion.LessThan(utils.Version_1_14) { + continue + } +``` +See example [here](https://github.com/hashicorp/consul-enterprise/blob/005a0a92c5f39804cef4ad5c4cd6fd3334b95aa2/test/integration/consul-container/test/upgrade/peering_control_plane_mgw_test.go#L92-L96) + +To write tests for bugs found during upgrades, see example on how to add a testcase for those scenarios [here](./fullstopupgrade_test.go). + +## FAQS + +**Q.** Are containers' ports (e.g., consul's 8500, envoy sidecar's admin port +or local upstream port) exposed on the docker host? \ +**A.** Yes, they are exposed. However, they are exposed through a [pod container](https://github.com/hashicorp/consul/blob/57e034b74621180861226a01efeb3e9cedc74d3a/test/integration/consul-container/libs/cluster/container.go#L132). +That is, a consul agent and the envoy proxy containers registered with the agent +share the [same Linux network namespace (i.e., they share `localhost`)](https://github.com/hashicorp/consul/blob/57e034b74621180861226a01efeb3e9cedc74d3a/test/integration/consul-container/libs/cluster/app.go#L23-L30) as the pod container. +The pod container use the same prefix as the consul agent in its name. + +**Q.** To troubleshoot, how can I send API request or consul command to the deployed cluster? \ +**A.** To send an API request or command to the deployed cluster, ensure that a cluster, services and sidecars have been created. See example below: +```go + cluster, _, _ := topology.NewCluster() + clientService := createServices(t, cluster) + _, port := clientService.GetAddr() + _, adminPort := clientService.GetAdminAddr() + ... + time.Sleep(900 * time.Second) + fmt.Println(port, adminPort) +``` +Then in your terminal `docker ps -a | grep consul` to get the running services and cluster. Exec in the cluster and run commands directly or make API request to `localhost:port` to relevant service or `localhost:adminPort` for envoy. + +**Q.** To troubleshoot, how can I access the envoy admin page? \ +**A.** To access envoy admin page, ensure that a cluster, services and sidecars have been created. Then get the adminPort for the client or server sidecar. See example on how to get the port above. Then navigate to a browser and go to the url `http://localhost:adminPort/` + +**Q.** My test is stuck with the error "could not start or join all agents: container 0: port not found"? \ +**A.** Simply re-run the tests. If the error persists, prune docker images `docker system prune`, run `make dev-docker`, then re-run tests again. + +**Q.** How to clean up the resources created the upgrade test? +**A.** Run the command `docker ps | grep consul` to find all left over resources, then `docker stop {CONTAINER_ID} && docker rm {CONTAINER_ID}` diff --git a/test/integration/consul-container/test/util/upgrade_tests_workflow.png b/test/integration/consul-container/test/util/upgrade_tests_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..f8403259c36d85d85b744f08ba1662bd857c767a GIT binary patch literal 511431 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

+6c#e23=Y`c@R_&+m5T*k=5B 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

EqW7;x|UAUqDtR=9@wnMzBb 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

2ma@n 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�=iG-Rci(gN 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 z z76S%Gbi0HfEx+*QLG7N?8)b&_g@qHE+&}#BY=$5Sc)1xU($WKKt>0UlX81-L+95jvEG;(DU{~wJQTQ@-;$b_qKRCA-62L zLtBlnYZ4i!{3)W4cT7Ge6x*PHAZ86QbijK{C8$bT6mN`;;cKo!^U0Ds#K@!@nSCT; zyJDKAbV?wl)(xH!-eIC@2LZ_iF+UK;G#yEvSQm$w)4aK!t{1gou&?Gr+cpV7+BZEy+C1lyxQ>6VW1S$6`U!ThUFtFOaE77a+VPlO zm}$ZR#H4|-K4-=lUYlFnguH`9t56Sy7dWT;0Br{S^ z=8`@)1JhPk^P8>ug3r-v-LBT>z%*xT?5X zdqZOv5(#omwa86d?LQ*eZF1lTLWCVzSAC9F#Vz0Sj_k#Y55tCDJC>;@(0F1<{&{7lm;JYn>;&|iZ3A@iA-ev=Rz|8O zJn`hUk$Yw3!;h=B&m|r9l~9QB<&k>*WU%g|2S+tk+6-HH7C-(O45PzLkAk9p?u=Wv zk7XSbjsfzpiH;g;1#MF%iZI*!)A7{6Q2{|d<`fls1P%UvGu3vv*DFlu%lpGk*ClyO za02yKy}ebR(|>eS7@;~66o~IE{UQ|%X-FAIAis$Gi`(dZ7h@%1mrO03-s-hP$nrwF zn$1!sZS)3Q_$-?_oLJ98RC~cQBhm45d+Ws?iq=tH(Dqc0s*FqT9#Hl@0WPH*YSrd% z__~2R%(RD}W75MXVW}#c-A3 MixEI?rbY|?4 Date: Mon, 20 Mar 2023 16:18:59 -0400 Subject: [PATCH 25/30] chore: replace hardcoded node name with a constant (#16692) --- api/health_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/health_test.go b/api/health_test.go index b69e9275fda2..796afa7f5641 100644 --- a/api/health_test.go +++ b/api/health_test.go @@ -192,8 +192,9 @@ func TestAPI_HealthChecks_AggregatedStatus(t *testing.T) { func TestAPI_HealthChecks(t *testing.T) { t.Parallel() + const nodename = "node123" c, s := makeClientWithConfig(t, nil, func(conf *testutil.TestServerConfig) { - conf.NodeName = "node123" + conf.NodeName = nodename }) defer s.Stop() @@ -215,7 +216,7 @@ func TestAPI_HealthChecks(t *testing.T) { retry.Run(t, func(r *retry.R) { checks := HealthChecks{ &HealthCheck{ - Node: "node123", + Node: nodename, CheckID: "service:foo", Name: "Service 'foo' check", Status: "critical", From c8d9cadd564ed4aebf0b0b382808358be4eece70 Mon Sep 17 00:00:00 2001 From: Tu Nguyen Date: Mon, 20 Mar 2023 13:53:09 -0700 Subject: [PATCH 26/30] Fix broken links from api docs (#16695) --- .../content/api-docs/connect/intentions.mdx | 20 +++++++++---------- website/content/commands/intention/check.mdx | 2 +- website/content/commands/intention/create.mdx | 2 +- website/content/commands/intention/delete.mdx | 2 +- website/content/commands/intention/get.mdx | 2 +- website/content/commands/intention/list.mdx | 2 +- website/content/commands/intention/match.mdx | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/website/content/api-docs/connect/intentions.mdx b/website/content/api-docs/connect/intentions.mdx index 870b6d4b77d9..f5b38e082cf4 100644 --- a/website/content/api-docs/connect/intentions.mdx +++ b/website/content/api-docs/connect/intentions.mdx @@ -48,7 +48,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -251,7 +251,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -305,7 +305,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -377,7 +377,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -440,7 +440,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -527,7 +527,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -582,7 +582,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -638,7 +638,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -698,7 +698,7 @@ The table below shows this endpoint's support for

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. diff --git a/website/content/commands/intention/check.mdx b/website/content/commands/intention/check.mdx index a0c384c6461c..d9a4d5d328c3 100644 --- a/website/content/commands/intention/check.mdx +++ b/website/content/commands/intention/check.mdx @@ -36,7 +36,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. diff --git a/website/content/commands/intention/create.mdx b/website/content/commands/intention/create.mdx index b41b9c502fb4..31f2ae899a9b 100644 --- a/website/content/commands/intention/create.mdx +++ b/website/content/commands/intention/create.mdx @@ -30,7 +30,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. diff --git a/website/content/commands/intention/delete.mdx b/website/content/commands/intention/delete.mdx index 1f6971c49062..87d9d65e9051 100644 --- a/website/content/commands/intention/delete.mdx +++ b/website/content/commands/intention/delete.mdx @@ -24,7 +24,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. diff --git a/website/content/commands/intention/get.mdx b/website/content/commands/intention/get.mdx index 6ac253c898ec..68dd744404f6 100644 --- a/website/content/commands/intention/get.mdx +++ b/website/content/commands/intention/get.mdx @@ -29,7 +29,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. diff --git a/website/content/commands/intention/list.mdx b/website/content/commands/intention/list.mdx index cc5130ac993d..928f416095d8 100644 --- a/website/content/commands/intention/list.mdx +++ b/website/content/commands/intention/list.mdx @@ -24,7 +24,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. diff --git a/website/content/commands/intention/match.mdx b/website/content/commands/intention/match.mdx index 4936e12ba358..e0bbfc1222e5 100644 --- a/website/content/commands/intention/match.mdx +++ b/website/content/commands/intention/match.mdx @@ -29,7 +29,7 @@ are not supported from commands, but may be from the corresponding HTTP endpoint

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. From 7eb3dcb65f8ce1a19bc9443ca893c9b9d41584d5 Mon Sep 17 00:00:00 2001 From: Paul Banks Date: Mon, 20 Mar 2023 21:44:00 +0000 Subject: [PATCH 27/30] Update WAL Known issues (#16676) --- website/content/docs/agent/wal-logstore/enable.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/website/content/docs/agent/wal-logstore/enable.mdx b/website/content/docs/agent/wal-logstore/enable.mdx index cdd9b933dfd5..908e1af8abb2 100644 --- a/website/content/docs/agent/wal-logstore/enable.mdx +++ b/website/content/docs/agent/wal-logstore/enable.mdx @@ -34,8 +34,7 @@ We recommend taking the following additional measures: ## Known issues -The following issues were discovered after release of Consul 1.15.1 and will be -fixed in a future patch release. +The following issues exist in Consul 1.15.0 and 1.15.1. * A follower that is disconnected may be unable to catch up if it is using the WAL backend. * Restoring user snapshots can break replication to WAL-enabled followers. From d75f2ba5da32bcdf86cf55281c894b2822bfd5b9 Mon Sep 17 00:00:00 2001 From: Valeriia Ruban Date: Mon, 20 Mar 2023 15:41:47 -0700 Subject: [PATCH 28/30] UI: update Ember to 3.28.6 (#16616) --------- Co-authored-by: wenincode --- .circleci/config.yml | 2 +- build-support/docker/Build-UI.dockerfile | 2 +- ui/.nvmrc | 2 +- ui/GNUmakefile | 1 - ui/package.json | 2 +- ui/packages/consul-ui/.eslintrc.js | 22 +- .../app/components/auth-dialog/index.js | 2 +- .../consul/intention/form/fieldsets/index.js | 2 +- .../consul/intention/permission/form/index.js | 2 +- .../app/components/consul/kv/form/index.js | 4 +- .../app/components/data-collection/index.js | 6 +- .../app/components/data-form/index.js | 6 - .../app/components/data-loader/index.js | 2 +- .../app/components/list-collection/index.js | 10 +- .../components/tabular-collection/index.js | 12 +- .../app/instance-initializers/container.js | 4 +- ui/packages/consul-ui/app/models/partition.js | 3 +- .../consul-ui/app/modifiers/with-copyable.js | 1 + ui/packages/consul-ui/app/router.js | 4 +- ui/packages/consul-ui/app/routing/route.js | 2 +- .../oauth2-code-with-url-provider.js | 28 +- .../consul-ui/app/templates/application.hbs | 8 +- ui/packages/consul-ui/app/templates/debug.hbs | 8 +- .../consul-ui/config/ember-cli-update.json | 2 +- ui/packages/consul-ui/package.json | 37 +- ui/yarn.lock | 8138 ++++++----------- 26 files changed, 2802 insertions(+), 5510 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f4c3cac98b0e..34738285e5f1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,7 +43,7 @@ references: # When updating the Go version, remember to also update the versions in the # workflows section for go-test-lib jobs. go: &GOLANG_IMAGE docker.mirror.hashicorp.services/cimg/go:1.20.1 - ember: &EMBER_IMAGE docker.mirror.hashicorp.services/circleci/node:14-browsers + ember: &EMBER_IMAGE docker.mirror.hashicorp.services/circleci/node:16-browsers ubuntu: &UBUNTU_CI_IMAGE ubuntu-2004:202201-02 cache: yarn: &YARN_CACHE_KEY consul-ui-v9-{{ checksum "ui/yarn.lock" }} diff --git a/build-support/docker/Build-UI.dockerfile b/build-support/docker/Build-UI.dockerfile index c89c3c1ec930..f5a4c1181e70 100644 --- a/build-support/docker/Build-UI.dockerfile +++ b/build-support/docker/Build-UI.dockerfile @@ -1,4 +1,4 @@ -FROM docker.mirror.hashicorp.services/circleci/node:14-browsers +FROM docker.mirror.hashicorp.services/circleci/node:16-browsers USER root diff --git a/ui/.nvmrc b/ui/.nvmrc index 8351c19397f4..b6a7d89c68e0 100644 --- a/ui/.nvmrc +++ b/ui/.nvmrc @@ -1 +1 @@ -14 +16 diff --git a/ui/GNUmakefile b/ui/GNUmakefile index ab70bbc61b89..da9652584f8e 100644 --- a/ui/GNUmakefile +++ b/ui/GNUmakefile @@ -25,7 +25,6 @@ deps: clean cd packages/consul-ui && \ $(MAKE) deps - # Build a distribution of the UI for Vercel previews. # The distribution must be copied into the ui/ subfolder # in order to mirror the go binary diff --git a/ui/package.json b/ui/package.json index b7b44961c17f..5a161e4e691b 100644 --- a/ui/package.json +++ b/ui/package.json @@ -24,6 +24,6 @@ "ember-basic-dropdown": "3.0.21" }, "engines": { - "node": ">=10 <=14" + "node": ">=14 <=16" } } diff --git a/ui/packages/consul-ui/.eslintrc.js b/ui/packages/consul-ui/.eslintrc.js index 27629d00c6cb..c8397263b5ea 100644 --- a/ui/packages/consul-ui/.eslintrc.js +++ b/ui/packages/consul-ui/.eslintrc.js @@ -49,17 +49,17 @@ module.exports = { // node files { files: [ - '.eslintrc.js', - 'tailwind.config.js', - '.docfy-config.js', - '.prettierrc.js', - '.template-lintrc.js', - 'ember-cli-build.js', - 'testem.js', - 'blueprints/*/index.js', - 'config/**/*.js', - 'lib/*/index.js', - 'server/**/*.js', + './tailwind.config.js', + './.docfy-config.js', + './.eslintrc.js', + './.prettierrc.js', + './.template-lintrc.js', + './ember-cli-build.js', + './testem.js', + './blueprints/*/index.js', + './config/**/*.js', + './lib/*/index.js', + './server/**/*.js', ], parserOptions: { sourceType: 'script', diff --git a/ui/packages/consul-ui/app/components/auth-dialog/index.js b/ui/packages/consul-ui/app/components/auth-dialog/index.js index 69f52abd0811..52a7eac2393e 100644 --- a/ui/packages/consul-ui/app/components/auth-dialog/index.js +++ b/ui/packages/consul-ui/app/components/auth-dialog/index.js @@ -35,7 +35,7 @@ export default class AuthDialog extends Component { if (typeof prev !== 'undefined' && prev !== current) { type = 'use'; } - this.args.onchange({ data: get(this, 'token'), type: type }); + this.args.onchange({ data: this.token, type: type }); } @action diff --git a/ui/packages/consul-ui/app/components/consul/intention/form/fieldsets/index.js b/ui/packages/consul-ui/app/components/consul/intention/form/fieldsets/index.js index bbeb81054b23..569ba439139f 100644 --- a/ui/packages/consul-ui/app/components/consul/intention/form/fieldsets/index.js +++ b/ui/packages/consul-ui/app/components/consul/intention/form/fieldsets/index.js @@ -22,7 +22,7 @@ export default Component.extend({ return !items.findBy('Name', term); }, add: function (name, changeset, value) { - if (!(changeset.get(name) || []).includes(value) && value.isNew) { + if (!(changeset.get(name) || []).includes(value)) { changeset.pushObject(name, value); changeset.validate(); } diff --git a/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.js b/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.js index 965f5fa9597c..b84e8dadba46 100644 --- a/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.js +++ b/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.js @@ -47,7 +47,7 @@ export default Component.extend({ changeset: computed('item', function () { const changeset = this.change.changesetFor(name, this.item || this.repo.create()); - if (changeset.isNew) { + if (changeset.isPristine) { changeset.validate(); } return changeset; diff --git a/ui/packages/consul-ui/app/components/consul/kv/form/index.js b/ui/packages/consul-ui/app/components/consul/kv/form/index.js index 240ed0fa6ff5..1d5ae5d7de56 100644 --- a/ui/packages/consul-ui/app/components/consul/kv/form/index.js +++ b/ui/packages/consul-ui/app/components/consul/kv/form/index.js @@ -4,7 +4,7 @@ */ import Component from '@ember/component'; -import { get, set } from '@ember/object'; +import { set } from '@ember/object'; import { inject as service } from '@ember/service'; export default Component.extend({ @@ -31,7 +31,7 @@ export default Component.extend({ set(item, 'Value', this.encoder.execute(target.value)); break; case 'additional': - parent = get(this, 'parent'); + parent = this.parent; set(item, 'Key', `${parent !== '/' ? parent : ''}${target.value}`); break; case 'json': diff --git a/ui/packages/consul-ui/app/components/data-collection/index.js b/ui/packages/consul-ui/app/components/data-collection/index.js index 6e07ec830b28..6bdba36c5157 100644 --- a/ui/packages/consul-ui/app/components/data-collection/index.js +++ b/ui/packages/consul-ui/app/components/data-collection/index.js @@ -5,11 +5,9 @@ import Component from '@glimmer/component'; import { inject as service } from '@ember/service'; -import { computed, get, action } from '@ember/object'; -import { alias } from '@ember/object/computed'; +import { computed, get, action, defineProperty } from '@ember/object'; +import { alias, sort } from '@ember/object/computed'; import { tracked } from '@glimmer/tracking'; -import { sort } from '@ember/object/computed'; -import { defineProperty } from '@ember/object'; export default class DataCollectionComponent extends Component { @service('filter') filter; diff --git a/ui/packages/consul-ui/app/components/data-form/index.js b/ui/packages/consul-ui/app/components/data-form/index.js index f18f57d0f7da..ba6dca5f4cfa 100644 --- a/ui/packages/consul-ui/app/components/data-form/index.js +++ b/ui/packages/consul-ui/app/components/data-form/index.js @@ -37,12 +37,6 @@ export default Component.extend(Slotted, { this._super(...arguments); set(this, 'hasError', this._isRegistered('error')); }, - willDestroyElement: function () { - this._super(...arguments); - if (get(this, 'data.isNew')) { - this.data.rollbackAttributes(); - } - }, actions: { setData: function (data) { let changeset = data; diff --git a/ui/packages/consul-ui/app/components/data-loader/index.js b/ui/packages/consul-ui/app/components/data-loader/index.js index cbaf3ab29e01..a85b36648c12 100644 --- a/ui/packages/consul-ui/app/components/data-loader/index.js +++ b/ui/packages/consul-ui/app/components/data-loader/index.js @@ -18,7 +18,7 @@ export default Component.extend(Slotted, { didReceiveAttrs: function () { this._super(...arguments); if (typeof this.items !== 'undefined') { - this.actions.change.apply(this, [this.items]); + this.send('change', this.items); } }, didInsertElement: function () { diff --git a/ui/packages/consul-ui/app/components/list-collection/index.js b/ui/packages/consul-ui/app/components/list-collection/index.js index 40639aa44f8b..bd3fa340b465 100644 --- a/ui/packages/consul-ui/app/components/list-collection/index.js +++ b/ui/packages/consul-ui/app/components/list-collection/index.js @@ -34,8 +34,8 @@ export default Component.extend(Slotted, { this._super(...arguments); this._cellLayout = this['cell-layout'] = new PercentageColumns( get(this, 'items.length'), - get(this, 'columns'), - get(this, 'cellHeight') + this.columns, + this.cellHeight ); const o = this; this['cell-layout'].formatItemStyle = function (itemIndex) { @@ -51,14 +51,14 @@ export default Component.extend(Slotted, { return {}; } return { - height: get(this, 'height'), + height: this.height, }; }), actions: { resize: function (e) { // TODO: This top part is very similar to resize in tabular-collection // see if it make sense to DRY out - const dom = get(this, 'dom'); + const dom = this.dom; const $footer = dom.element('footer[role="contentinfo"]'); if ($footer) { const border = 1; @@ -74,7 +74,7 @@ export default Component.extend(Slotted, { return this.dom.clickFirstAnchor(e, '.list-collection > ul > li'); }, change: function (index, e = {}) { - if (e.target.checked && index !== get(this, 'checked')) { + if (e.target.checked && index !== this.checked) { set(this, 'checked', parseInt(index)); this.$row = this.dom.closest('li', e.target); this.$row.style.zIndex = 1; diff --git a/ui/packages/consul-ui/app/components/tabular-collection/index.js b/ui/packages/consul-ui/app/components/tabular-collection/index.js index 1ff900498074..6fe96984e25a 100644 --- a/ui/packages/consul-ui/app/components/tabular-collection/index.js +++ b/ui/packages/consul-ui/app/components/tabular-collection/index.js @@ -25,7 +25,7 @@ export default CollectionComponent.extend(Slotted, { this.guid = this.dom.guid(this); // TODO: The row height should auto calculate properly from the CSS const o = this; - this['cell-layout'] = new Grid(get(this, 'width'), get(this, 'rowHeight')); + this['cell-layout'] = new Grid(this.width, this.rowHeight); this['cell-layout'].formatItemStyle = function (itemIndex) { let style = formatItemStyle.apply(this, arguments); if (o.checked === itemIndex) { @@ -40,12 +40,12 @@ export default CollectionComponent.extend(Slotted, { this.actions.resize.apply(this, [{ target: this.dom.viewport() }]); }, style: computed('rowHeight', '_items', 'maxRows', 'maxHeight', function () { - const maxRows = get(this, 'rows'); - let height = get(this, 'maxHeight'); + const maxRows = this.rows; + let height = this.maxHeight; if (maxRows) { let rows = Math.max(3, get(this._items || [], 'length')); rows = Math.min(maxRows, rows); - height = get(this, 'rowHeight') * rows + 29; + height = this.rowHeight * rows + 29; } return { height: height, @@ -80,7 +80,7 @@ export default CollectionComponent.extend(Slotted, { const height = e.target.innerHeight - space; this.set('maxHeight', Math.max(0, height)); // TODO: The row height should auto calculate properly from the CSS - this['cell-layout'] = new Grid($appContent.clientWidth, get(this, 'rowHeight')); + this['cell-layout'] = new Grid($appContent.clientWidth, this.rowHeight); const o = this; this['cell-layout'].formatItemStyle = function (itemIndex) { let style = formatItemStyle.apply(this, arguments); @@ -100,7 +100,7 @@ export default CollectionComponent.extend(Slotted, { if (this.$tr) { this.$tr.style.zIndex = null; } - if (e.target && e.target.checked && index !== get(this, 'checked')) { + if (e.target && e.target.checked && index !== this.checked) { set(this, 'checked', parseInt(index)); const target = e.target; const $tr = this.dom.closest('tr', target); diff --git a/ui/packages/consul-ui/app/instance-initializers/container.js b/ui/packages/consul-ui/app/instance-initializers/container.js index 1edb8b7ee28d..2602e2050e93 100644 --- a/ui/packages/consul-ui/app/instance-initializers/container.js +++ b/ui/packages/consul-ui/app/instance-initializers/container.js @@ -5,11 +5,11 @@ import { runInDebug } from '@ember/debug'; import require from 'require'; -import merge from 'deepmerge'; +import assign from 'deepmerge'; const doc = document; -export const services = merge.all( +export const services = assign.all( [...doc.querySelectorAll(`script[data-services]`)].map(($item) => JSON.parse($item.dataset[`services`]) ) diff --git a/ui/packages/consul-ui/app/models/partition.js b/ui/packages/consul-ui/app/models/partition.js index ae541feb5dea..2511943c96b9 100644 --- a/ui/packages/consul-ui/app/models/partition.js +++ b/ui/packages/consul-ui/app/models/partition.js @@ -3,8 +3,7 @@ * SPDX-License-Identifier: MPL-2.0 */ -import Model from 'ember-data/model'; -import attr from 'ember-data/attr'; +import Model, { attr } from '@ember-data/model'; export const PRIMARY_KEY = 'uid'; export const SLUG_KEY = 'Name'; diff --git a/ui/packages/consul-ui/app/modifiers/with-copyable.js b/ui/packages/consul-ui/app/modifiers/with-copyable.js index 4ce067e7d7d6..4e39de855d2e 100644 --- a/ui/packages/consul-ui/app/modifiers/with-copyable.js +++ b/ui/packages/consul-ui/app/modifiers/with-copyable.js @@ -31,6 +31,7 @@ export default class WithCopyableModifier extends Modifier { this.source = this.clipboard .execute(this.element, { text: (_) => value, + container: this.element, ...hash.options, }) .on('success', hash.success) diff --git a/ui/packages/consul-ui/app/router.js b/ui/packages/consul-ui/app/router.js index c46ef8be3427..661942d176de 100644 --- a/ui/packages/consul-ui/app/router.js +++ b/ui/packages/consul-ui/app/router.js @@ -7,14 +7,14 @@ import EmberRouter from '@ember/routing/router'; import config from './config/environment'; import { runInDebug } from '@ember/debug'; -import merge from 'deepmerge'; +import assign from 'deepmerge'; import { env } from 'consul-ui/env'; import walk, { dump } from 'consul-ui/utils/routing/walk'; const doc = document; const appName = config.modulePrefix; -export const routes = merge.all( +export const routes = assign.all( [...doc.querySelectorAll(`script[data-routes]`)].map(($item) => JSON.parse($item.dataset[`routes`]) ) diff --git a/ui/packages/consul-ui/app/routing/route.js b/ui/packages/consul-ui/app/routing/route.js index 705e96318644..12d6063b3d72 100644 --- a/ui/packages/consul-ui/app/routing/route.js +++ b/ui/packages/consul-ui/app/routing/route.js @@ -143,6 +143,6 @@ export default class BaseRoute extends Route { if (typeof obj !== 'undefined' && !Array.isArray(obj) && typeof obj !== 'string') { params = Object.values(obj); } - return super.transitionTo(routeName, ...params); + return this.router.transitionTo(routeName, ...params); } } diff --git a/ui/packages/consul-ui/app/services/auth-providers/oauth2-code-with-url-provider.js b/ui/packages/consul-ui/app/services/auth-providers/oauth2-code-with-url-provider.js index 59845ee4dac9..2328411a595a 100644 --- a/ui/packages/consul-ui/app/services/auth-providers/oauth2-code-with-url-provider.js +++ b/ui/packages/consul-ui/app/services/auth-providers/oauth2-code-with-url-provider.js @@ -14,24 +14,22 @@ export default class OAuth2CodeWithURLProvider extends OAuth2CodeProvider { } open(options) { - const name = this.get('name'), + const name = this.name, url = this.buildUrl(), responseParams = ['state', 'code'], responseType = 'code'; - return this.get('popup') - .open(url, responseParams, options) - .then(function (authData) { - // the same as the parent class but with an authorizationState added - const creds = { - authorizationState: authData.state, - authorizationCode: decodeURIComponent(authData[responseType]), - provider: name, - }; - runInDebug((_) => - console.info('Retrieved the following creds from the OAuth Provider', creds) - ); - return creds; - }); + return this.popup.open(url, responseParams, options).then(function (authData) { + // the same as the parent class but with an authorizationState added + const creds = { + authorizationState: authData.state, + authorizationCode: decodeURIComponent(authData[responseType]), + provider: name, + }; + runInDebug((_) => + console.info('Retrieved the following creds from the OAuth Provider', creds) + ); + return creds; + }); } close() { diff --git a/ui/packages/consul-ui/app/templates/application.hbs b/ui/packages/consul-ui/app/templates/application.hbs index db0b17fa5577..6e7537d43d67 100644 --- a/ui/packages/consul-ui/app/templates/application.hbs +++ b/ui/packages/consul-ui/app/templates/application.hbs @@ -9,13 +9,13 @@ {{! Tell CSS what we have enabled }} {{#if (can 'use acls')}} - {{document-attrs class='has-acls'}} + {{document-attrs class="has-acls"}} {{/if}} {{#if (can 'use nspaces')}} - {{document-attrs class='has-nspaces'}} + {{document-attrs class="has-nspaces" }} {{/if}} {{#if (can 'use partitions')}} - {{document-attrs class='has-partitions'}} + {{document-attrs class="has-partitions" }} {{/if}} {{! Listen out for blocking query/client setting changes }} @@ -28,7 +28,7 @@ {{#each-in source.data as |key value|}} {{#if (and value (includes key (array 'color-scheme' 'contrast')))}} - {{document-attrs class=(concat 'prefers-' key '-' value)}} + {{document-attrs class=(concat "prefers-" key "-" value) }} {{/if}} {{/each-in}} diff --git a/ui/packages/consul-ui/app/templates/debug.hbs b/ui/packages/consul-ui/app/templates/debug.hbs index 8315e721ce07..d63d176957a1 100644 --- a/ui/packages/consul-ui/app/templates/debug.hbs +++ b/ui/packages/consul-ui/app/templates/debug.hbs @@ -5,16 +5,16 @@ {{page-title 'Engineering Docs - Consul' separator=' - '}} -{{document-attrs class="is-debug"}} +{{document-attrs class="is-debug" }} {{! Tell CSS what we have enabled }} {{#if (can "use acls")}} - {{document-attrs class="has-acls"}} + {{document-attrs class="has-acls" }} {{/if}} {{#if (can "use nspaces")}} - {{document-attrs class="has-nspaces"}} + {{document-attrs class="has-nspaces" }} {{/if}} {{#if (can "use partitions")}} - {{document-attrs class="has-partitions"}} + {{document-attrs class="has-partitions" }} {{/if}} diff --git a/ui/packages/consul-ui/config/ember-cli-update.json b/ui/packages/consul-ui/config/ember-cli-update.json index 439897f2bb3e..dd50f3d6ab45 100644 --- a/ui/packages/consul-ui/config/ember-cli-update.json +++ b/ui/packages/consul-ui/config/ember-cli-update.json @@ -3,7 +3,7 @@ "packages": [ { "name": "ember-cli", - "version": "3.27.0", + "version": "3.28.6", "blueprints": [ { "name": "app", diff --git a/ui/packages/consul-ui/package.json b/ui/packages/consul-ui/package.json index 8ecf761f1320..f4ce7643adf5 100644 --- a/ui/packages/consul-ui/package.json +++ b/ui/packages/consul-ui/package.json @@ -64,7 +64,7 @@ "@docfy/ember": "^0.4.1", "@ember/optional-features": "^2.0.0", "@ember/render-modifiers": "^1.0.2", - "@ember/test-helpers": "^2.2.5", + "@ember/test-helpers": "^2.6.0", "@glimmer/component": "^1.0.4", "@glimmer/tracking": "^1.0.4", "@hashicorp/design-system-components": "^1.6.0", @@ -87,7 +87,7 @@ "broccoli-funnel": "^3.0.3", "broccoli-merge-trees": "^4.2.0", "chalk": "^4.1.0", - "clipboard": "^2.0.4", + "clipboard": "^2.0.11", "consul-acls": "*", "consul-hcp": "*", "consul-lock-sessions": "*", @@ -108,15 +108,15 @@ "ember-auto-import": "^2.4.2", "ember-can": "^4.2.0", "ember-changeset-validations": "~3.15.2", - "ember-cli": "~3.27.0", + "ember-cli": "3.28.6", "ember-cli-app-version": "^5.0.0", - "ember-cli-babel": "^7.26.6", + "ember-cli-babel": "^7.26.10", "ember-cli-code-coverage": "^1.0.0-beta.4", "ember-cli-dependency-checker": "^3.2.0", "ember-cli-deprecation-workflow": "^2.1.0", "ember-cli-flash": "^2.1.1", - "ember-cli-htmlbars": "^5.7.1", - "ember-cli-inject-live-reload": "^2.0.2", + "ember-cli-htmlbars": "^5.7.2", + "ember-cli-inject-live-reload": "^2.1.0", "ember-cli-page-object": "^1.17.11", "ember-cli-postcss": "^8.1.0", "ember-cli-sri": "^2.1.1", @@ -127,7 +127,7 @@ "ember-collection": "^1.0.0", "ember-compatibility-helpers": "^1.2.5", "ember-composable-helpers": "^5.0.0", - "ember-data": "~3.27.1", + "ember-data": "~3.28.6", "ember-data-model-fragments": "5.0.0-beta.8", "ember-decorators": "^6.1.1", "ember-exam": "^6.1.0", @@ -145,25 +145,25 @@ "ember-page-title": "^6.2.2", "ember-power-select": "^4.0.5", "ember-power-select-with-create": "^0.8.0", - "ember-qunit": "^5.1.4", + "ember-qunit": "^5.1.5", "ember-ref-bucket": "^4.1.0", "ember-render-helpers": "^0.2.0", - "ember-resolver": "^8.0.2", + "ember-resolver": "^8.0.3", "ember-route-action-helper": "^2.0.8", "ember-router-helpers": "^0.4.0", "ember-set-helper": "^2.0.0", "ember-sinon-qunit": "5.0.0", - "ember-source": "~3.27.2", + "ember-source": "3.28.8", "ember-stargate": "^0.2.0", "ember-string-fns": "^1.4.0", "ember-test-selectors": "^5.0.0", "ember-truth-helpers": "^3.0.0", - "eslint": "^7.27.0", + "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", - "eslint-plugin-ember": "^10.4.2", + "eslint-plugin-ember": "^10.5.8", "eslint-plugin-node": "^11.0.0", - "eslint-plugin-prettier": "^3.4.0", - "eslint-plugin-qunit": "^6.1.1", + "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-qunit": "^6.2.0", "faker": "^5.5.3", "flat": "^5.0.0", "hast-util-to-string": "^1.0.4", @@ -177,9 +177,9 @@ "ngraph.graph": "^19.1.0", "parse-duration": "^1.0.0", "pretender": "^3.2.0", - "prettier": "^2.3.0", + "prettier": "^2.5.1", "pretty-ms": "^7.0.1", - "qunit": "^2.15.0", + "qunit": "^2.17.2", "qunit-dom": "^1.6.0", "react-is": "^17.0.1", "refractor": "^3.5.0", @@ -197,7 +197,7 @@ "webpack": "^5.74.0" }, "engines": { - "node": ">=10 <=14" + "node": ">=14 <=16" }, "ember": { "edition": "octane" @@ -213,5 +213,8 @@ }, "volta": { "node": "14.20.1" + }, + "dependencies": { + "doctoc": "^2.0.0" } } diff --git a/ui/yarn.lock b/ui/yarn.lock index 0d238218fcc1..44a87f13f553 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== @@ -17,75 +17,19 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/code-frame@^7.18.6": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.8": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.11.tgz#9c8fe523c206979c9a81b1e12fe50c1254f1aa35" - integrity sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg== - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" - integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== - -"@babel/compat-data@^7.20.0": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" - integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== - -"@babel/compat-data@^7.20.5": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== -"@babel/core@^7.0.0", "@babel/core@^7.1.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.2.2", "@babel/core@^7.3.4", "@babel/core@^7.7.5": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" - integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.10" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/core@^7.13.10": +"@babel/core@^7.0.0", "@babel/core@^7.1.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.10", "@babel/core@^7.13.8", "@babel/core@^7.16.7", "@babel/core@^7.2.2", "@babel/core@^7.3.4": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== @@ -106,84 +50,6 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/core@^7.13.8": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" - integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.2" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.1" - "@babel/parser" "^7.20.2" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.16.7": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" - integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.13" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.13" - "@babel/types" "^7.18.13" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.13.0", "@babel/generator@^7.13.9": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" - integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== - dependencies: - "@babel/types" "^7.18.13" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.2.tgz#c2e89e22613a039285c1e7b749e2cd0b30b9a481" - integrity sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q== - dependencies: - "@babel/types" "^7.20.2" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - "@babel/generator@^7.21.0", "@babel/generator@^7.21.1": version "7.21.1" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" @@ -194,20 +60,6 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -215,22 +67,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" @@ -247,47 +83,7 @@ "@babel/helper-hoist-variables" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.12.0", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" - integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== - dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.20.7": +"@babel/helper-compilation-targets@^7.12.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== @@ -298,99 +94,32 @@ lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298" - integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" - integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" + integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" - integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" + regexpu-core "^5.3.1" -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -399,32 +128,11 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" - integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" @@ -432,41 +140,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-function-name@^7.21.0": +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== @@ -474,142 +148,28 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.12.13", "@babel/helper-hoist-variables@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" - integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== - dependencies: - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.18.6": +"@babel/helper-hoist-variables@^7.12.13", "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== +"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.21.0" -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" - integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-module-transforms@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" - integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-module-transforms@^7.21.0": +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== @@ -623,20 +183,6 @@ "@babel/traverse" "^7.21.2" "@babel/types" "^7.21.2" -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -644,40 +190,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== - -"@babel/helper-remap-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": +"@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== @@ -687,58 +205,17 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== - dependencies: - "@babel/types" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" "@babel/helper-simple-access@^7.20.2": version "7.20.2" @@ -747,40 +224,12 @@ dependencies: "@babel/types" "^7.20.2" -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" @@ -789,107 +238,30 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-identifier@^7.19.1": +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - "@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helper-wrap-function@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== "@babel/helper-wrap-function@^7.18.9": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" - integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== - dependencies: - "@babel/helper-function-name" "^7.18.9" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.11" - "@babel/types" "^7.18.10" - -"@babel/helpers@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helpers@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" - integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== dependencies: + "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.0" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" "@babel/helpers@^7.21.0": version "7.21.0" @@ -900,25 +272,7 @@ "@babel/traverse" "^7.21.0" "@babel/types" "^7.21.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.18.6": +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== @@ -927,38 +281,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" - integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== - -"@babel/parser@^7.16.7", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== - -"@babel/parser@^7.18.10", "@babel/parser@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" - integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== - -"@babel/parser@^7.20.1", "@babel/parser@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.2.tgz#9aeb9b92f64412b5f81064d46f6a1ac0881337f4" - integrity sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg== - -"@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": +"@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -966,69 +293,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" - integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-class-properties@^7.16.5", "@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.16.5", "@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -1036,59 +320,25 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.13.5": - version "7.13.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz#d28071457a5ba8ee1394b23e38d5dcf32ea20ef7" - integrity sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-decorators" "^7.12.13" - -"@babel/plugin-proposal-decorators@^7.16.7": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz#788650d01e518a8a722eb8b3055dd9d73ecb7a35" - integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== +"@babel/plugin-proposal-decorators@^7.13.5", "@babel/plugin-proposal-decorators@^7.16.7": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz#70e0c89fdcd7465c97593edb8f628ba6e4199d63" + integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.18.6" - -"@babel/plugin-proposal-dynamic-import@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" - integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.21.0" "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" @@ -1098,22 +348,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" - integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" @@ -1122,22 +356,6 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" - integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" @@ -1146,47 +364,15 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" - integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" - integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6", "@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -1194,22 +380,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" @@ -1218,54 +388,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.13.8", "@babel/plugin-proposal-object-rest-spread@^7.5.5": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.8" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.13.0" - -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== - dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== +"@babel/plugin-proposal-object-rest-spread@^7.20.2", "@babel/plugin-proposal-object-rest-spread@^7.5.5": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" - integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" @@ -1275,50 +407,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.8", "@babel/plugin-proposal-optional-chaining@^7.6.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz#e39df93efe7e7e621841babc197982e140e90756" - integrity sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== +"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.6.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" - integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.16.5": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.16.5", "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -1326,43 +424,17 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.16.5", "@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== +"@babel/plugin-proposal-private-property-in-object@^7.16.5", "@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-proposal-unicode-property-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6": +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== @@ -1391,19 +463,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" - integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-decorators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz#2e45af22835d0b0f8665da2bfd4463649ce5dbc1" - integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ== +"@babel/plugin-syntax-decorators@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz#d2b3f31c3e86fa86e16bb540b7660c55bd7d0e78" + integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -1419,12 +484,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" @@ -1482,13 +547,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" @@ -1496,74 +554,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.12.13", "@babel/plugin-syntax-typescript@^7.2.0", "@babel/plugin-syntax-typescript@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-syntax-typescript@^7.2.0", "@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.8.3": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" @@ -1572,127 +584,44 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.12.13", "@babel/plugin-transform-block-scoping@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-classes@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== +"@babel/plugin-transform-block-scoping@^7.20.2", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== +"@babel/plugin-transform-classes@^7.20.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" -"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" -"@babel/plugin-transform-dotall-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-dotall-regex@^7.18.6": +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== @@ -1700,20 +629,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" @@ -1721,22 +636,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" @@ -1745,43 +644,12 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" + integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" @@ -1792,20 +660,6 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -1813,20 +667,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" @@ -1834,111 +674,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-amd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.13.0", "@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== - dependencies: - "@babel/helper-hoist-variables" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-identifier" "^7.12.11" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== - dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" @@ -1948,41 +709,13 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-new-target@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" @@ -1992,27 +725,11 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-assign@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz#d9b9200a69e03403a813e44a933ad9f4bddfd050" - integrity sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz#7830b4b6f83e1374a5afb9f6111bcfaea872cdd2" + integrity sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" @@ -2022,40 +739,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" @@ -2064,41 +753,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" - integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== - dependencies: - regenerator-transform "^0.14.2" - "@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" @@ -2108,30 +769,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@^7.12.1", "@babel/plugin-transform-runtime@^7.13.9": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz#a1e40d22e2bf570c591c9c7e5ab42d6bf1e419e1" - integrity sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.1.4" - babel-plugin-polyfill-corejs3 "^0.1.3" - babel-plugin-polyfill-regenerator "^0.1.2" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8" + integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" @@ -2140,43 +787,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== +"@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" @@ -2185,20 +802,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" @@ -2206,20 +809,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" @@ -2228,13 +817,13 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" - integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz#f0956a153679e3b377ae5b7f0143427151e4c848" + integrity sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-typescript" "^7.12.13" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-typescript@~7.4.0": version "7.4.5" @@ -2262,20 +851,6 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-typescript" "^7.8.3" -"@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" @@ -2283,22 +858,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" @@ -2315,172 +874,18 @@ core-js "^2.6.5" regenerator-runtime "^0.13.4" -"@babel/preset-env@^7.10.2": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.10.tgz#b5cde31d5fe77ab2a6ab3d453b59041a1b3a5252" - integrity sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-proposal-async-generator-functions" "^7.13.8" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-dynamic-import" "^7.13.8" - "@babel/plugin-proposal-export-namespace-from" "^7.12.13" - "@babel/plugin-proposal-json-strings" "^7.13.8" - "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-numeric-separator" "^7.12.13" - "@babel/plugin-proposal-object-rest-spread" "^7.13.8" - "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.8" - "@babel/plugin-proposal-private-methods" "^7.13.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.13.0" - "@babel/plugin-transform-async-to-generator" "^7.13.0" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" - "@babel/plugin-transform-classes" "^7.13.0" - "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.13.0" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.13.0" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.12.13" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.13.0" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.13.0" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.1.4" - babel-plugin-polyfill-corejs3 "^0.1.3" - babel-plugin-polyfill-regenerator "^0.1.2" - core-js-compat "^3.9.0" - semver "^6.3.0" - -"@babel/preset-env@^7.16.5": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== - dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" - semver "^6.3.0" - -"@babel/preset-env@^7.16.7": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== +"@babel/preset-env@^7.10.2", "@babel/preset-env@^7.16.5", "@babel/preset-env@^7.16.7": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -2489,7 +894,7 @@ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" @@ -2500,7 +905,7 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-import-assertions" "^7.20.0" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -2513,10 +918,10 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -2524,43 +929,32 @@ "@babel/plugin-transform-function-name" "^7.18.9" "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-parameters" "^7.20.1" "@babel/plugin-transform-property-literals" "^7.18.6" "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-spread" "^7.19.0" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - "@babel/preset-modules@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" @@ -2572,48 +966,26 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime@7.12.18": version "7.12.18" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" - integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" - integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" + integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" + regenerator-runtime "^0.13.4" -"@babel/template@^7.18.10", "@babel/template@^7.18.6": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== +"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" + regenerator-runtime "^0.13.11" -"@babel/template@^7.20.7": +"@babel/template@^7.18.10", "@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== @@ -2622,70 +994,7 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.18.11", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" - integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.13" - "@babel/types" "^7.18.13" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" - integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.1" - "@babel/types" "^7.20.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== @@ -2701,42 +1010,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.1.6", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" - integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" - integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2": +"@babel/types@^7.1.6", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== @@ -2772,10 +1046,10 @@ resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5" integrity sha512-pH4KCsbtBLLe7eqUrw8brcuFO8IZlN36JjdKlOublibVdAIPHCzEnpBWOVUXK5sCf+DpBi8ZtuWtjF0srybdeA== -"@docfy/core@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@docfy/core/-/core-0.4.2.tgz#6e33378d0bee4e612a9d66bb98050bd08bcd1aad" - integrity sha512-Y/AC+wsKCgBtXT+NxmjgjU44QVrLg4N3/VQD0Yg36XVegqCRZGFR6jXfDt8qf2ysCL6TJAqrC6Rm2zhHXl76+A== +"@docfy/core@^0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@docfy/core/-/core-0.4.4.tgz#041157870abcde99e64068cdbd79767b2c1a97b4" + integrity sha512-m1q0KsRQZepXO5xZouOPXH9K8KJS7lnM6eDutHbYJsiUOG8e4ZpYYGJ+ckOTGzLKSXJGYFoRJRxO82Y9yaPhMA== dependencies: debug "^4.3.1" fast-glob "^3.2.5" @@ -2799,11 +1073,11 @@ yaml "^1.9.2" "@docfy/ember@^0.4.1": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@docfy/ember/-/ember-0.4.2.tgz#f3a15709f2c94f846985306b4670fbe94e4b2db9" - integrity sha512-NsKhYgwHD8/EvE042nogXHNOiOs6Sj3YqWfkEhHBeJmrt7Y8vnMvW6Xmf6aPNHIW0GS7pWFwTfBFxu/YOx+8Vg== + version "0.4.8" + resolved "https://registry.yarnpkg.com/@docfy/ember/-/ember-0.4.8.tgz#8fe3c525b0d44790bdc801bc3b5f588a27c840bd" + integrity sha512-IxkLQJp4/pn4HvW6mxnd9ezErbrKM5i/maNUPCa3ixxFgPFMWRmwn05EP+6Y2ZAqOHaJXtkDMxllCg6tdFFFBQ== dependencies: - "@docfy/core" "^0.4.2" + "@docfy/core" "^0.4.4" broccoli-bridge "^1.0.0" broccoli-file-creator "^2.1.1" broccoli-funnel "^3.0.3" @@ -2811,6 +1085,7 @@ broccoli-node-api "^1.7.0" broccoli-plugin "^4.0.3" broccoli-source "^3.0.0" + calculate-cache-key-for-tree "2.0.0" debug "^4.3.1" ember-cli-babel "^7.23.1" ember-cli-htmlbars "^5.3.1" @@ -2822,78 +1097,79 @@ unist-util-find "^1.0.2" unist-util-visit "^2.0.2" -"@ember-data/adapter@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/adapter/-/adapter-3.27.1.tgz#4258b138ae43f1329995b8fce54e866d0b9b79a3" - integrity sha512-g9JPXn2QvV47xFWbY7xRiVp4LEbE4vkVo/qu3NtrvD+MLHNmfWn6VHhx2+v5mQB0pBe8lK8nPZGoS8PM/3CMuA== +"@ember-data/adapter@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/adapter/-/adapter-3.28.13.tgz#3b921365046a329f3eb1c72fc4964c6aff06e53b" + integrity sha512-AwLJTs+GvxX72vfP3edV0hoMLD9oPWJNbnqxakXVN9xGTuk6/TeGQLMrVU3222GCoMMNrJ357Nip7kZeFo4IdA== dependencies: - "@ember-data/private-build-infra" "3.27.1" - "@ember-data/store" "3.27.1" + "@ember-data/private-build-infra" "3.28.13" + "@ember-data/store" "3.28.13" "@ember/edition-utils" "^1.2.0" - "@ember/string" "^1.0.0" + "@ember/string" "^3.0.0" ember-cli-babel "^7.26.6" ember-cli-test-info "^1.0.0" - ember-cli-typescript "^4.0.0" + ember-cli-typescript "^4.1.0" -"@ember-data/canary-features@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/canary-features/-/canary-features-3.27.1.tgz#fa589ff8a37f6dcc607f874303be024a4f7a186a" - integrity sha512-7RLYG1W1woBu116h4bE3zfEHCV+EVVzNZcgRD3tUH9cg/EvOfXfn3naAFNnoA7TIEl2ZShRPgNNi2SjkYYy52Q== +"@ember-data/canary-features@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/canary-features/-/canary-features-3.28.13.tgz#59cd75b94bfff86f85affb42e66016c71f45f02e" + integrity sha512-fgpcB0wmtUjZeqcIKkfP/MclQjY5r8ft8YZhPlvQh2MIx+3d3nCNRXB6lEUdRdQphFEag2towONFEIsiOAgs3Q== dependencies: ember-cli-babel "^7.26.6" ember-cli-typescript "^4.1.0" -"@ember-data/debug@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/debug/-/debug-3.27.1.tgz#76ec39fd981ad9e97d140a30dfae6e3258144c0e" - integrity sha512-VWAzZFqKiheMc7Qx5yIekpdfamSBWURjNF5NKCQGGLRv7SsQe1eOjbW5iaq+gsnNr/gk4U95yLd225kUf6ubEQ== +"@ember-data/debug@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/debug/-/debug-3.28.13.tgz#eb20779de83429f5d493d3c8e81ced468fa5974d" + integrity sha512-ofny/Grpqx1lM6KWy5q75/b2/B+zQ4B4Ynk7SrQ//sFvpX3gjuP8iN07SKTHSN07vedlC+7QNhNJdCQwyqK1Fg== dependencies: - "@ember-data/private-build-infra" "3.27.1" + "@ember-data/private-build-infra" "3.28.13" "@ember/edition-utils" "^1.2.0" - "@ember/string" "^1.0.0" + "@ember/string" "^3.0.0" ember-cli-babel "^7.26.6" ember-cli-test-info "^1.0.0" - ember-cli-typescript "^4.0.0" + ember-cli-typescript "^4.1.0" -"@ember-data/model@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/model/-/model-3.27.1.tgz#e35730da811c21e85f2bd334eb4a741f5368ce50" - integrity sha512-GC5bf2wAad6ePCoreOj4JknJaJ62FBwR9q+/zFxADU1Ns68kyVm/Xg7KD1sDvcXEwLJebH09j9sN7LkwZaN3Og== +"@ember-data/model@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/model/-/model-3.28.13.tgz#50ac1bd5783e7cc51344767d5ff46f84198f4d1a" + integrity sha512-V5Hgzz5grNWTSrKGksY9xeOsTDLN/d3qsVMu26FWWHP5uqyWT0Cd4LSRpNxs14PsTFDcbrtGKaZv3YVksZfFEQ== dependencies: - "@ember-data/canary-features" "3.27.1" - "@ember-data/private-build-infra" "3.27.1" - "@ember-data/store" "3.27.1" + "@ember-data/canary-features" "3.28.13" + "@ember-data/private-build-infra" "3.28.13" + "@ember-data/store" "3.28.13" "@ember/edition-utils" "^1.2.0" - "@ember/string" "^1.0.0" + "@ember/string" "^3.0.0" + ember-cached-decorator-polyfill "^0.1.4" ember-cli-babel "^7.26.6" ember-cli-string-utils "^1.1.0" ember-cli-test-info "^1.0.0" - ember-cli-typescript "^4.0.0" + ember-cli-typescript "^4.1.0" ember-compatibility-helpers "^1.2.0" - inflection "1.12.0" + inflection "~1.13.1" -"@ember-data/private-build-infra@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/private-build-infra/-/private-build-infra-3.27.1.tgz#040a9f646a1ca2764e67bf1108dc489d2008e7d5" - integrity sha512-Cox/CRovg1gFGuO2zn64JSAezbbO1XHP+tLWDXRIiB2Oqlk3CtNxEs9K02DxMCojK4C8itFDOVpBKLYCB5MbYQ== +"@ember-data/private-build-infra@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/private-build-infra/-/private-build-infra-3.28.13.tgz#828a27e724240b1ef70ae5dd8ab8be1f61275929" + integrity sha512-8gT3/gnmbNgFIMVdHBpl3xFGJefJE26VUIidFHTF1/N1aumVUlEhnXH0BSPxvxTnFXz/klGSTOMs+sDsx3jw6A== dependencies: "@babel/plugin-transform-block-scoping" "^7.8.3" - "@ember-data/canary-features" "3.27.1" + "@ember-data/canary-features" "3.28.13" "@ember/edition-utils" "^1.2.0" babel-plugin-debug-macros "^0.3.3" babel-plugin-filter-imports "^4.0.0" babel6-plugin-strip-class-callcheck "^6.0.0" broccoli-debug "^0.6.5" broccoli-file-creator "^2.1.1" - broccoli-funnel "^2.0.2" + broccoli-funnel "^3.0.3" broccoli-merge-trees "^4.2.0" - broccoli-rollup "^4.1.1" + broccoli-rollup "^5.0.0" calculate-cache-key-for-tree "^2.0.0" chalk "^4.0.0" ember-cli-babel "^7.26.6" ember-cli-path-utils "^1.0.0" ember-cli-string-utils "^1.1.0" - ember-cli-typescript "^3.1.3" + ember-cli-typescript "^4.1.0" ember-cli-version-checker "^5.1.1" esm "^3.2.25" git-repo-info "^2.1.1" @@ -2904,49 +1180,48 @@ semver "^7.1.3" silent-error "^1.1.1" -"@ember-data/record-data@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/record-data/-/record-data-3.27.1.tgz#2d9e35e36404790adebc24890ca0eb8ee1ecfb65" - integrity sha512-QSY7vJIbfCCpVNhAXkGc73UiXqX7UyELq0Mc3URoVCKRYZJOCSnydPYARLgN/NM99HV0Mw1aa+KP8Nco8Z/gFg== +"@ember-data/record-data@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/record-data/-/record-data-3.28.13.tgz#2bf169404732e126489d3b3a8dc6c0dfca8b5f5f" + integrity sha512-0qYOxQr901eZ0JoYVt/IiszZYuNefqO6yiwKw0VH2dmWhVniQSp+Da9YnoKN9U2KgR4NdxKiUs2j9ZLNZ+bH7g== dependencies: - "@ember-data/canary-features" "3.27.1" - "@ember-data/private-build-infra" "3.27.1" - "@ember-data/store" "3.27.1" + "@ember-data/canary-features" "3.28.13" + "@ember-data/private-build-infra" "3.28.13" + "@ember-data/store" "3.28.13" "@ember/edition-utils" "^1.2.0" - "@ember/ordered-set" "^4.0.0" ember-cli-babel "^7.26.6" ember-cli-test-info "^1.0.0" - ember-cli-typescript "^4.0.0" + ember-cli-typescript "^4.1.0" "@ember-data/rfc395-data@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@ember-data/rfc395-data/-/rfc395-data-0.0.4.tgz#ecb86efdf5d7733a76ff14ea651a1b0ed1f8a843" integrity sha512-tGRdvgC9/QMQSuSuJV45xoyhI0Pzjm7A9o/MVVA3HakXIImJbbzx/k/6dO9CUEQXIyS2y0fW6C1XaYOG7rY0FQ== -"@ember-data/serializer@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/serializer/-/serializer-3.27.1.tgz#17301698281e9d888f6c38b59c4b460c9ab27fd7" - integrity sha512-kJE+kiisk1d9KQYRcRK4BFQhhsZ3n7ADlyK5eCsaNEwJm4YsfvKgjUgaC16MJddX4LG9d7QORHNJT9rWcCL9fg== +"@ember-data/serializer@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/serializer/-/serializer-3.28.13.tgz#6dfa8ba17c0ea192313134643dbe56adf45a722a" + integrity sha512-BlYXi8ObH0B5G7QeWtkf9u8PrhdlfAxOAsOuOPZPCTzWsQlmyzV6M9KvBmIAvJtM2IQ3a5BX2o71eP6/7MJDUg== dependencies: - "@ember-data/private-build-infra" "3.27.1" - "@ember-data/store" "3.27.1" + "@ember-data/private-build-infra" "3.28.13" + "@ember-data/store" "3.28.13" ember-cli-babel "^7.26.6" ember-cli-test-info "^1.0.0" - ember-cli-typescript "^4.0.0" + ember-cli-typescript "^4.1.0" -"@ember-data/store@3.27.1": - version "3.27.1" - resolved "https://registry.yarnpkg.com/@ember-data/store/-/store-3.27.1.tgz#2026adbeee893d3a71417b82095b4921fdd590fb" - integrity sha512-RL9OkNBB9DtT5nkYTmGuk46hbVs2avuvSggiPJU3iuQYD3dJ8jC2XGGs3Z4FHEzAVWwlCnFiwVT03GfYbuIbUw== +"@ember-data/store@3.28.13": + version "3.28.13" + resolved "https://registry.yarnpkg.com/@ember-data/store/-/store-3.28.13.tgz#be3c3fca03d155767af72422f6a3c6dcd6147be8" + integrity sha512-y1ddWLfR20l3NN9fNfIAFWCmREnC6hjKCZERDgkvBgZOCAKcs+6bVJGyMmKBcsp4W7kanqKn71tX7Y63jp+jXQ== dependencies: - "@ember-data/canary-features" "3.27.1" - "@ember-data/private-build-infra" "3.27.1" - "@ember/string" "^1.0.0" + "@ember-data/canary-features" "3.28.13" + "@ember-data/private-build-infra" "3.28.13" + "@ember/string" "^3.0.0" "@glimmer/tracking" "^1.0.4" + ember-cached-decorator-polyfill "^0.1.4" ember-cli-babel "^7.26.6" ember-cli-path-utils "^1.0.0" - ember-cli-typescript "^4.0.0" - heimdalljs "^0.3.0" + ember-cli-typescript "^4.1.0" "@ember-decorators/component@^6.1.1": version "6.1.1" @@ -2988,14 +1263,6 @@ mkdirp "^1.0.4" silent-error "^1.1.1" -"@ember/ordered-set@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@ember/ordered-set/-/ordered-set-4.0.0.tgz#c5ec021ab8d4734c6db92708a81edd499d45fd31" - integrity sha512-cUCcme4R5H37HyK8w0qzdG5+lpb3XVr2RQHLyWEP4JsKI66Ob4tizoJOs8rb/XdHCv+F5WeA321hfPMi3DrZbg== - dependencies: - ember-cli-babel "^7.22.1" - ember-compatibility-helpers "^1.1.1" - "@ember/render-modifiers@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-1.0.2.tgz#2e87c48db49d922ce4850d707215caaac60d8444" @@ -3005,33 +1272,33 @@ ember-modifier-manager-polyfill "^1.1.0" "@ember/render-modifiers@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.0.tgz#7106928078c6463bc6ee3cbffb6d71dbb8602145" - integrity sha512-FbvowKEnYx102MaNMrePBC7RCmuf3BaqPKbp6QP7S6oJaDMuLrGblXW4TxOrE93C6II+6D4QNB4WFGuPeQ3ZBg== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.5.tgz#4b1d9496a82ca471aeaa3ecddd94ef089450f415" + integrity sha512-5cJ1niIdOJC6k6KtIn9HGbr1DATJQp4ZqMv1vbi6LKQWbVCQ3byvKONtUEi3H0wcewlrcaWCqXOgm0nACzCOQA== dependencies: - ember-cli-babel "^7.26.6" - ember-compatibility-helpers "^1.2.5" + "@embroider/macros" "^1.0.0" + ember-cli-babel "^7.26.11" ember-modifier-manager-polyfill "^1.2.0" -"@ember/string@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ember/string/-/string-1.1.0.tgz#58ec0e8867e94d3bcdcde7aa7a9fe06d450079e8" - integrity sha512-T8UHFSO9hrkRM9+OingBmbQ69mdb8xjEXxZLCNprQX+cEJI+dyI0Nv3JAYt/0SFTT+/IQW40r004O2n/CsNnEQ== +"@ember/string@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@ember/string/-/string-3.0.1.tgz#42cf032031a4432c2dd69c327ae1876d2c13df9c" + integrity sha512-ntnmXS+upOWVXE+rVw2l03DjdMnaGdWbYVUxUBuPJqnIGZu2XFRsoXc7E6mOw62s8i1Xh1RgTuFHN41QGIolEQ== dependencies: - ember-cli-babel "^7.4.0" + ember-cli-babel "^7.26.6" -"@ember/test-helpers@^2.2.5": - version "2.8.1" - resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-2.8.1.tgz#20f2e30d48172c2ff713e1db7fbec5352f918d4e" - integrity sha512-jbsYwWyAdhL/pdPu7Gb3SG1gvIXY70FWMtC/Us0Kmvk82Y+5YUQ1SOC0io75qmOGYQmH7eQrd/bquEVd+4XtdQ== +"@ember/test-helpers@^2.6.0": + version "2.9.3" + resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-2.9.3.tgz#c2a9d6ab1c367af92cf1a334f97eb19b8e06e6e1" + integrity sha512-ejVg4Dj+G/6zyLvQsYOvmGiOLU6AS94tY4ClaO1E2oVvjjtVJIRmVLFN61I+DuyBg9hS3cFoPjQRTZB9MRIbxQ== dependencies: "@ember/test-waiters" "^3.0.0" - "@embroider/macros" "^1.6.0" - "@embroider/util" "^1.6.0" + "@embroider/macros" "^1.10.0" + "@embroider/util" "^1.9.0" broccoli-debug "^0.6.5" broccoli-funnel "^3.0.8" - ember-cli-babel "^7.26.6" - ember-cli-htmlbars "^5.7.1" + ember-cli-babel "^7.26.11" + ember-cli-htmlbars "^6.1.1" ember-destroyable-polyfill "^2.0.3" "@ember/test-waiters@^3.0.0": @@ -3044,7 +1311,7 @@ ember-cli-version-checker "^5.1.2" semver "^7.3.5" -"@embroider/addon-shim@^1.0.0": +"@embroider/addon-shim@^1.0.0", "@embroider/addon-shim@^1.5.0", "@embroider/addon-shim@^1.8.4": version "1.8.4" resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.4.tgz#0e7f32c5506bf0f3eb0840506e31c36c7053763c" integrity sha512-sFhfWC0vI18KxVenmswQ/ShIvBg4juL8ubI+Q3NTSdkCTeaPQ/DIOUF6oR5DCQ8eO/TkIaw+kdG3FkTY6yNJqA== @@ -3053,53 +1320,6 @@ broccoli-funnel "^3.0.8" semver "^7.3.8" -"@embroider/addon-shim@^1.5.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.3.tgz#2368510b8ce42d50d02cb3289c32e260dfa34bd9" - integrity sha512-7pyHwzT6ESXc3nZsB8rfnirLkUhQWdvj6CkYH+0MUPN74mX4rslf7pnBqZE/KZkW3uBIaBYvU8fxi0hcKC/Paw== - dependencies: - "@embroider/shared-internals" "^1.8.3" - semver "^7.3.5" - -"@embroider/core@0.33.0", "@embroider/core@^0.33.0": - version "0.33.0" - resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.33.0.tgz#0fb1752d6e34ea45368e65c42e13220a57ffae76" - integrity sha512-Kd3W4vBJCSwskVislwldhuoe1RtdA04lRr2r2ccnPI4msCXxLn292WBaS7/x0LdEu2EMO5ffRDeQva2/xoS4Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.12.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.12.1" - "@babel/runtime" "^7.12.5" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - "@embroider/macros" "0.33.0" - assert-never "^1.1.0" - babel-plugin-syntax-dynamic-import "^6.18.0" - broccoli-node-api "^1.7.0" - broccoli-persistent-filter "^3.1.2" - broccoli-plugin "^4.0.1" - broccoli-source "^3.0.0" - debug "^3.1.0" - escape-string-regexp "^4.0.0" - fast-sourcemap-concat "^1.4.0" - filesize "^4.1.2" - fs-extra "^7.0.1" - fs-tree-diff "^2.0.0" - handlebars "^4.4.2" - js-string-escape "^1.0.1" - jsdom "^16.4.0" - json-stable-stringify "^1.0.1" - lodash "^4.17.10" - pkg-up "^2.0.0" - resolve "^1.8.1" - resolve-package-path "^1.2.2" - semver "^7.3.2" - strip-bom "^3.0.0" - typescript-memoize "^1.0.0-alpha.3" - walk-sync "^1.1.3" - wrap-legacy-hbs-plugin-if-needed "^1.0.1" - "@embroider/core@0.36.0": version "0.36.0" resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.36.0.tgz#fbbd60d29c3fcbe02b4e3e63e6043a43de2b9ce3" @@ -3139,21 +1359,6 @@ walk-sync "^1.1.3" wrap-legacy-hbs-plugin-if-needed "^1.0.1" -"@embroider/macros@0.33.0": - version "0.33.0" - resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.33.0.tgz#d5826ea7565bb69b57ba81ed528315fe77acbf9d" - integrity sha512-nl/1zRn+Wd3MO8Bb+YPqHmFl/2vwQLTsEB6Zt+K9bWXsM/kA+dPCeeCReLN6PbkMP16xxqtNSIrQ8Y49hnWjpg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - "@embroider/core" "0.33.0" - assert-never "^1.1.0" - ember-cli-babel "^7.23.0" - lodash "^4.17.10" - resolve "^1.8.1" - semver "^7.3.2" - "@embroider/macros@0.36.0", "@embroider/macros@^0.36.0": version "0.36.0" resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.36.0.tgz#5330f1e6f12112f0f68e34b3e4855dc7dd3c69a5" @@ -3194,28 +1399,28 @@ resolve "^1.20.0" semver "^7.3.2" -"@embroider/macros@1.8.3", "@embroider/macros@^1.0.0", "@embroider/macros@^1.6.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.8.3.tgz#2f0961ab8871f6ad819630208031d705b357757e" - integrity sha512-gnIOfTL/pUkoD6oI7JyWOqXlVIUgZM+CnbH10/YNtZr2K0hij9eZQMdgjOZZVgN0rKOFw9dIREqc1ygrJHRYQA== +"@embroider/macros@^0.42.3": + version "0.42.3" + resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.42.3.tgz#eb4dc35c43f1cb1d14298219ba037f8cead06081" + integrity sha512-4I+Sde8FU7QMwNQ3gYtj8fdBTqUeoPDn61XuV4Xng7p9LszQksGDXtyEhWrf9KWU3G+NtrZotY5LICd5P+E3tw== dependencies: - "@embroider/shared-internals" "1.8.3" + "@embroider/shared-internals" "0.42.3" assert-never "^1.2.1" - babel-import-util "^1.1.0" ember-cli-babel "^7.26.6" - find-up "^5.0.0" lodash "^4.17.21" resolve "^1.20.0" semver "^7.3.2" -"@embroider/macros@^0.42.3": - version "0.42.3" - resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.42.3.tgz#eb4dc35c43f1cb1d14298219ba037f8cead06081" - integrity sha512-4I+Sde8FU7QMwNQ3gYtj8fdBTqUeoPDn61XuV4Xng7p9LszQksGDXtyEhWrf9KWU3G+NtrZotY5LICd5P+E3tw== +"@embroider/macros@^1.0.0", "@embroider/macros@^1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.10.0.tgz#af3844d5db48f001b85cfb096c76727c72ad6c1e" + integrity sha512-LMbfQGk/a+f6xtvAv5fq/wf2LRxETnbgSCLUf/z6ebzmuskOUxrke+uP55chF/loWrARi9g6erFQ7RDOUoBMSg== dependencies: - "@embroider/shared-internals" "0.42.3" + "@embroider/shared-internals" "2.0.0" assert-never "^1.2.1" + babel-import-util "^1.1.0" ember-cli-babel "^7.26.6" + find-up "^5.0.0" lodash "^4.17.21" resolve "^1.20.0" semver "^7.3.2" @@ -3259,10 +1464,10 @@ semver "^7.3.5" typescript-memoize "^1.0.1" -"@embroider/shared-internals@1.8.3", "@embroider/shared-internals@^1.0.0", "@embroider/shared-internals@^1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-1.8.3.tgz#52d868dc80016e9fe983552c0e516f437bf9b9f9" - integrity sha512-N5Gho6Qk8z5u+mxLCcMYAoQMbN4MmH+z2jXwQHVs859bxuZTxwF6kKtsybDAASCtd2YGxEmzcc1Ja/wM28824w== +"@embroider/shared-internals@2.0.0", "@embroider/shared-internals@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-2.0.0.tgz#d8205ec6944362aeecfbb51143db352430ced316" + integrity sha512-qZ2/xky9mWm5YC6noOa6AiAwgISEQ78YTZNv4SNu2PFgEK/H+Ha/3ddngzGSsnXkVnIHZyxIBzhxETonQYHY9g== dependencies: babel-import-util "^1.1.0" ember-rfc176-data "^0.3.17" @@ -3273,10 +1478,10 @@ semver "^7.3.5" typescript-memoize "^1.0.1" -"@embroider/shared-internals@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-2.0.0.tgz#d8205ec6944362aeecfbb51143db352430ced316" - integrity sha512-qZ2/xky9mWm5YC6noOa6AiAwgISEQ78YTZNv4SNu2PFgEK/H+Ha/3ddngzGSsnXkVnIHZyxIBzhxETonQYHY9g== +"@embroider/shared-internals@^1.0.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-1.8.3.tgz#52d868dc80016e9fe983552c0e516f437bf9b9f9" + integrity sha512-N5Gho6Qk8z5u+mxLCcMYAoQMbN4MmH+z2jXwQHVs859bxuZTxwF6kKtsybDAASCtd2YGxEmzcc1Ja/wM28824w== dependencies: babel-import-util "^1.1.0" ember-rfc176-data "^0.3.17" @@ -3305,14 +1510,14 @@ broccoli-funnel "^3.0.5" ember-cli-babel "^7.23.1" -"@embroider/util@^1.6.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@embroider/util/-/util-1.8.3.tgz#7267a2b6fcbf3e56712711441159ab373f9bee7a" - integrity sha512-FvsPzsb9rNeveSnIGnsfLkWWBdSM5QIA9lDVtckUktRnRnBWZHm5jDxU/ST//pWMhZ8F0DucRlFWE149MTLtuQ== +"@embroider/util@^1.9.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@embroider/util/-/util-1.10.0.tgz#8320d73651e7f5d48dac1b71fb9e6d21cac7c803" + integrity sha512-utAFKoq6ajI27jyqjvX3PiGL4m+ZyGVlVNbSbE/nOqi2llRyAkh5ltH1WkIK7jhdwQFJouo1NpOSj9J3/HDa3A== dependencies: - "@embroider/macros" "1.8.3" + "@embroider/macros" "^1.10.0" broccoli-funnel "^3.0.5" - ember-cli-babel "^7.23.1" + ember-cli-babel "^7.26.11" "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -3329,17 +1534,56 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@formatjs/ecma402-abstract@1.6.3": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.3.tgz#f82bd2cf3aa8aaa0f12f9339902942b8d4b96912" - integrity sha512-7ijswObmYXabVy5GvcpKG29jbyJ9rGtFdRBdmdQvoDmMo0PwlOl/L08GtrjA4YWLAZ0j2owb2YrRLGNAvLBk+Q== +"@formatjs/ecma402-abstract@1.11.4": + version "1.11.4" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda" + integrity sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw== dependencies: + "@formatjs/intl-localematcher" "0.2.25" tslib "^2.1.0" -"@glimmer/component@^1.0.0", "@glimmer/component@^1.0.2", "@glimmer/component@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.0.4.tgz#1c85a5181615a6647f6acfaaed68e28ad7e9626e" - integrity sha512-sS4N8wtcKfYdUJ6O3m8nbTut6NjErdz94Ap8VB1ekcg4WSD+7sI7Nmv6kt2rdPoe363nUdjUbRBzHNWhLzraBw== +"@formatjs/ecma402-abstract@1.6.4": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.4.tgz#cff5ef03837fb6bae70b16d04940213c17e87884" + integrity sha512-ukFjGD9dLsxcD9D5AEshJqQElPQeUAlTALT/lzIV6OcYojyuU81gw/uXDUOrs6XW79jtOJwQDkLqHbCJBJMOTw== + dependencies: + tslib "^2.1.0" + +"@formatjs/fast-memoize@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz#e6f5aee2e4fd0ca5edba6eba7668e2d855e0fc21" + integrity sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg== + dependencies: + tslib "^2.1.0" + +"@formatjs/icu-messageformat-parser@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz#a54293dd7f098d6a6f6a084ab08b6d54a3e8c12d" + integrity sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw== + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + "@formatjs/icu-skeleton-parser" "1.3.6" + tslib "^2.1.0" + +"@formatjs/icu-skeleton-parser@1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964" + integrity sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg== + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + tslib "^2.1.0" + +"@formatjs/intl-localematcher@0.2.25": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a" + integrity sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA== + dependencies: + tslib "^2.1.0" + +"@glimmer/component@^1.0.0", "@glimmer/component@^1.0.4": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.1.2.tgz#892ec0c9f0b6b3e41c112be502fde073cf24d17c" + integrity sha512-XyAsEEa4kWOPy+gIdMjJ8XlzA3qrGH55ZDv6nA16ibalCR17k74BI0CztxuRds+Rm6CtbUVgheCVlcCULuqD7A== dependencies: "@glimmer/di" "^0.1.9" "@glimmer/env" "^0.1.7" @@ -3359,7 +1603,7 @@ "@glimmer/di@^0.1.9": version "0.1.11" resolved "https://registry.yarnpkg.com/@glimmer/di/-/di-0.1.11.tgz#a6878c07a13a2c2c76fcde598a5c97637bfc4280" - integrity sha1-poeMB6E6LCx2/N5ZilyXY3v8QoA= + integrity sha512-moRwafNDwHTnTHzyyZC9D+mUSvYrs1Ak0tRPjjmCghdoHHIvMshVbEnwKb/1WmW5CUlKc2eL9rlAV32n3GiItg== "@glimmer/encoder@^0.42.2": version "0.42.2" @@ -3372,19 +1616,19 @@ "@glimmer/env@0.1.7", "@glimmer/env@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07" - integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc= + integrity sha512-JKF/a9I9jw6fGoz8kA7LEQslrwJ5jms5CXhu/aqkBWk+PmZ6pTl8mlb/eJ/5ujBGTiQzBhy5AIWF712iA+4/mw== -"@glimmer/global-context@0.65.2": - version "0.65.2" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.65.2.tgz#6c522dbe0996de2ea308c257492a3782620ed2ee" - integrity sha512-BUWgPmPoWb6ILnJxvG0WgASJ9RVjhd3wSZwEpUIVGdOc9CHfD+4WhpYJNjPPoYMbq2NS5B6QXT1MP66hyGqq8Q== +"@glimmer/global-context@0.65.4": + version "0.65.4" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.65.4.tgz#1da1d59dd4260ce912c40e474cd39c2e82de51b8" + integrity sha512-RSYCPG/uVR5XCDcPREBclncU7R0zkjACbADP+n3FWAH1TfWbXRMDIkvO/ZlwHkjHoCZf6tIM6p5S/MoFzfJEJA== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/interfaces@0.65.2": - version "0.65.2" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.65.2.tgz#9630e39c0f66ad166e7c617579cee8d858bf3653" - integrity sha512-/YdkmFFB4c7TAF71fhsQCLM1HUOuYp19bnKv+gAdlK3R2TooOpfg+ijoaAzI9WXgTK9V6zA5SE42ncLREBRGdQ== +"@glimmer/interfaces@0.65.4": + version "0.65.4" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.65.4.tgz#d298cc2b12b8ebcf269f39246ca7ab92816f6680" + integrity sha512-R0kby79tGNKZOojVJa/7y0JH9Eq4SV+L1s6GcZy30QUZ1g1AAGS5XwCIXc9Sc09coGcv//q+6NLeSw7nlx1y4A== dependencies: "@simple-dom/interface" "^1.4.0" @@ -3415,15 +1659,15 @@ "@glimmer/util" "^0.42.2" "@glimmer/reference@^0.65.0": - version "0.65.2" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.65.2.tgz#9dae205ee48d7eb08042f7bf805cda4e0303c0f8" - integrity sha512-koGW9mGyFhVKykDrINdiqD9l/Q8TFv2okmrTvCFleS9+2kJ56x3V3wa5xQU2cRIAewkbXCWNiNbyDz5EVq9alw== + version "0.65.4" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.65.4.tgz#bbc8becd6a1bf01fc189b6489e27446437194711" + integrity sha512-yuRVE4qyqrlCndDMrHKDWUbDmGDCjPzsFtlTmxxnhDMJAdQsnr2cRLITHvQRDm1tXfigVvyKnomeuYhRRbBqYQ== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.65.2" - "@glimmer/interfaces" "0.65.2" - "@glimmer/util" "0.65.2" - "@glimmer/validator" "0.65.2" + "@glimmer/global-context" "0.65.4" + "@glimmer/interfaces" "0.65.4" + "@glimmer/util" "0.65.4" + "@glimmer/validator" "0.65.4" "@glimmer/runtime@^0.42.1": version "0.42.2" @@ -3449,30 +1693,30 @@ simple-html-tokenizer "^0.5.8" "@glimmer/syntax@^0.65.0": - version "0.65.2" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.65.2.tgz#7aa66e5da0d48f0d67f9841201e8ca91d350674a" - integrity sha512-cfAqRgka8EVhDgDJKu3d1WMOZLJu1H+tuOb4J4LutcbYRswLYkvPYED2UA8Bw6oekpN34GYFRzwb/JODAWNBpA== + version "0.65.4" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.65.4.tgz#49164de5dc9e8b67084ec009bdd865e379d8a971" + integrity sha512-y+/C3e8w96efk3a/Z5If9o4ztKJwrr8RtDpbhV2J8X+DUsn5ic2N3IIdlThbt/Zn6tkP1K3dY6uaFUx3pGTvVQ== dependencies: - "@glimmer/interfaces" "0.65.2" - "@glimmer/util" "0.65.2" + "@glimmer/interfaces" "0.65.4" + "@glimmer/util" "0.65.4" "@handlebars/parser" "^1.1.0" simple-html-tokenizer "^0.5.10" -"@glimmer/tracking@^1.0.0", "@glimmer/tracking@^1.0.1", "@glimmer/tracking@^1.0.2", "@glimmer/tracking@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-1.0.4.tgz#f1bc1412fe5e2236d0f8d502994a8f88af1bbb21" - integrity sha512-F+oT8I55ba2puSGIzInmVrv/8QA2PcK1VD+GWgFMhF6WC97D+uZX7BFg+a3s/2N4FVBq5KHE+QxZzgazM151Yw== +"@glimmer/tracking@^1.0.0", "@glimmer/tracking@^1.0.1", "@glimmer/tracking@^1.0.4": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-1.1.2.tgz#74e71be07b0a7066518d24044d2665d0cf8281eb" + integrity sha512-cyV32zsHh+CnftuRX84ALZpd2rpbDrhLhJnTXn9W//QpqdRZ5rdMsxSY9fOsj0CKEc706tmEU299oNnDc0d7tA== dependencies: "@glimmer/env" "^0.1.7" "@glimmer/validator" "^0.44.0" -"@glimmer/util@0.65.2": - version "0.65.2" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.65.2.tgz#da9c6fa68a117ac1cb74fc79dad3eaa40d9cd4cb" - integrity sha512-xLjmGBSCTfDhi4tskVzg1M/Ii90wPL711O3TNLZF//ztv8SFRGNzh73oVbBzdYmEWR1OdED73ZTYL5MGzqBWLw== +"@glimmer/util@0.65.4": + version "0.65.4" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.65.4.tgz#e464145078f3f40da9013ff2590a6016515455d2" + integrity sha512-aofe+rdBhkREKP2GZta6jy1UcbRRMfWx7M18zxGxspPoeD08NscD04Kx+WiOKXmC1TcrfITr8jvqMfrKrMzYWQ== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.65.2" + "@glimmer/interfaces" "0.65.4" "@simple-dom/interface" "^1.4.0" "@glimmer/util@^0.42.2": @@ -3485,23 +1729,23 @@ resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.44.0.tgz#45df98d73812440206ae7bda87cfe04aaae21ed9" integrity sha512-duAsm30uVK9jSysElCbLyU6QQYO2X9iLDLBIBUcCqck9qN1o3tK2qWiHbGK5d6g8E2AJ4H88UrfElkyaJlGrwg== -"@glimmer/validator@0.65.2", "@glimmer/validator@^0.65.0": - version "0.65.2" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.65.2.tgz#a3e0dc737b0ff73e23f0444d9e45c5bb202c3454" - integrity sha512-IQxvCueyORlwa5kDd0AwFvVLYAaIKvT4EeMvOCqOp/jJ32dGGSXG++V37UY0cYUc9Ir3gTPE7bE9/0piTXSdag== +"@glimmer/validator@0.65.4", "@glimmer/validator@^0.65.0": + version "0.65.4" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.65.4.tgz#12c27a9a63706c60e6499fd687940e9d1affb32c" + integrity sha512-0YUjAyo45DF5JkQxdv5kHn96nMNhvZiEwsAD4Jme0kk5Q9MQcPOUtN76pQAS4f+C6GdF9DeUr2yGXZLFMmb+LA== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.65.2" + "@glimmer/global-context" "0.65.4" "@glimmer/validator@^0.44.0": version "0.44.0" resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.44.0.tgz#03d127097dc9cb23052cdb7fcae59d0a9dca53e1" integrity sha512-i01plR0EgFVz69GDrEuFgq1NheIjZcyTy3c7q+w7d096ddPVeVcRzU3LKaqCfovvLJ+6lJx40j45ecycASUUyw== -"@glimmer/vm-babel-plugins@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.78.2.tgz#b530a19f54da385c7099a22cf348e9062d186838" - integrity sha512-GSEf16h6OCtKx7PsSvD21cLXZuVc6swW2rSOAvfLeZco1DEWMRgYTwkCkColydKZcQ3gvwbPBeYwTC2K6tlnjg== +"@glimmer/vm-babel-plugins@0.80.3": + version "0.80.3" + resolved "https://registry.yarnpkg.com/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.80.3.tgz#434b62172318cac43830d3ac29818cf2c5f111c1" + integrity sha512-9ej6xlm5MzHBJ5am2l0dbbn8Z0wJoYoMpM8FcrGMlUP6SPMLWxvxpMsApgQo8u6dvZRCjR3/bw3fdf7GOy0AFw== dependencies: babel-plugin-debug-macros "^0.3.4" @@ -3540,35 +1784,30 @@ js-yaml "^3.13.1" "@hashicorp/design-system-components@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@hashicorp/design-system-components/-/design-system-components-1.6.1.tgz#da04f1199cdce78dcf6591c3678377b87bd67424" - integrity sha512-nfuY5KLK3kQWRfrFOIEEoSSca6LwZ9Zss13glHHyAIFt/gJ1pjSpcYj2XTukdjfAvx70qwQbHPPaAUXZ00vtoA== + version "1.7.3" + resolved "https://registry.yarnpkg.com/@hashicorp/design-system-components/-/design-system-components-1.7.3.tgz#27c15baf2abec67a7126cb63e7126da867196a9d" + integrity sha512-c6p8bl6BqWK4sx1EgKB0/Il2deIDy7CCwFFWrOkXHLHMLZQDL5IUXOrqcAQl5Q0L2MkoSc8P6cC90DU4kCbihg== dependencies: - "@hashicorp/design-system-tokens" "^1.4.0" + "@hashicorp/design-system-tokens" "^1.4.1" "@hashicorp/ember-flight-icons" "^3.0.2" dialog-polyfill "^0.5.6" - ember-auto-import "^2.4.2" + ember-auto-import "^2.6.0" ember-cached-decorator-polyfill "^0.1.4" ember-cli-babel "^7.26.11" - ember-cli-htmlbars "^6.1.0" + ember-cli-htmlbars "^6.2.0" ember-cli-sass "^10.0.1" - ember-composable-helpers "^4.4.1" + ember-composable-helpers "^4.5.0" ember-focus-trap "^1.0.1" ember-keyboard "^8.1.0" ember-named-blocks-polyfill "^0.2.5" ember-style-modifier "^0.8.0" ember-truth-helpers "^3.0.0" - sass "^1.43.4" - -"@hashicorp/design-system-tokens@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.0.0.tgz#06ab55873ef444b0958a5192db310278c6501f0b" - integrity sha512-akziX9jiHnQ8KfJA6s8l+98Ukz30C5Lw7BpSPeTduOmdOlJv1uP7w4TV0hC6VIDMDrJrxIF5Y/HnpSCdQGlxQA== + sass "^1.58.3" -"@hashicorp/design-system-tokens@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.4.0.tgz#2d42bd7d9250b01f77618663b3b92004be840af7" - integrity sha512-xZI5lom+qPi5B4qUDgXcuTc+A8/NQdXXBoIfB7NUnY/GRp4kOkxNkgScPj8fvAFvUuLdiCAQhpLU54z1A/Q3cA== +"@hashicorp/design-system-tokens@^1.0.0", "@hashicorp/design-system-tokens@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.4.1.tgz#461ee2ff7ccc46eb83098c30c20c6bba33e49cd0" + integrity sha512-e5bolI2Ch1+AW2/tQrkHG6QPx4g1oONum36CfhBmX4gDChpAVoBbTG2BT+XnlBJOM5vk1uuL39ysM5QSn/BZYQ== "@hashicorp/ember-cli-api-double@^4.0.0": version "4.0.0" @@ -3601,9 +1840,9 @@ integrity sha512-PhjTTHCjoq4EJirifbxLxnxXnCRf1NUAYZ1WnFW8i0yOmmax6fgjsJRPlf0VIGsR8R7isFpjuy6gJ5c7mNhE0w== "@html-next/vertical-collection@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@html-next/vertical-collection/-/vertical-collection-4.0.0.tgz#b3b3d52358e15e7ed46e028d12424dab994690ed" - integrity sha512-/c4y6ASmkMwyG+rcoXH3kx50LiK2MuPX0bsktd+j9LhOD6zkJyT4wJ73m20dCEvxjgwA/nCQ8hj3lApQlHG0CQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@html-next/vertical-collection/-/vertical-collection-4.0.2.tgz#7e9885423eb8c445bce0cc110ac3be281ca6ff87" + integrity sha512-S8cgntEDdXrOwdylVGDh1BFe+nX5uuUzzb3teh1FE++/kbqsOfUpXOYRUsEzsqb0fRqcm6eLxvtNb282Zr67rQ== dependencies: babel6-plugin-strip-class-callcheck "^6.0.0" broccoli-funnel "^3.0.8" @@ -3661,7 +1900,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== @@ -3684,15 +1923,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.17": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -3700,10 +1931,17 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@lit-labs/ssr-dom-shim@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz#427e19a2765681fd83411cd72c55ba80a01e0523" + integrity sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw== + "@lit/reactive-element@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.2.1.tgz#8620d7f0baf63e12821fa93c34d21e23477736f7" - integrity sha512-03FYfMguIWo9E1y1qcTpXzoO8Ukpn0j5o4GjNFq/iHqJEPY6pYopsU44e7NSFIgCTorr8wdUU5PfVy8VeD6Rwg== + version "1.6.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" + integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.0.0" "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -3713,18 +1951,18 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.4" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.stat@^1.1.2": version "1.1.3" @@ -3732,17 +1970,17 @@ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.4" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@popperjs/core@^2.8.3": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.1.tgz#7f554e7368c9ab679a11f4a042ca17149d70cf12" - integrity sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA== +"@popperjs/core@^2.9.0": + version "2.11.6" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" + integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== "@simple-dom/interface@^1.4.0": version "1.4.0" @@ -3750,9 +1988,9 @@ integrity sha512-l5qumKFWU0S+4ZzMaLXFU8tQZsicHEMEyAxI5kDFGhJsRqDwe0a7/iPA/GdxlGyDKseQQAgIz5kzU7eXTrlSpA== "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" - integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" @@ -3773,46 +2011,48 @@ type-detect "^4.0.8" "@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" + integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@textlint/ast-node-types@^4.2.5": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz#d3fda5c9086baba04bc75440039ccf18415c8446" - integrity sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g== +"@textlint/ast-node-types@^12.6.1": + version "12.6.1" + resolved "https://registry.yarnpkg.com/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz#35ecefe74e701d7f632c083d4fda89cab1b89012" + integrity sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA== -"@textlint/markdown-to-ast@~6.1.7": - version "6.1.7" - resolved "https://registry.yarnpkg.com/@textlint/markdown-to-ast/-/markdown-to-ast-6.1.7.tgz#7ed9561b577bcd5307c8ef82660bc568ce31647e" - integrity sha512-B0QtokeQR4a9+4q0NQr8T9l7A1fFihTN5Ze57tVgqW+3ymzXEouh8DvPHeNQ4T6jEkAThvdjk95mxAMpGRJ79w== +"@textlint/markdown-to-ast@^12.1.1": + version "12.6.1" + resolved "https://registry.yarnpkg.com/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz#fcccb5733b3e76cd0db78a323763ab101f2d803b" + integrity sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ== dependencies: - "@textlint/ast-node-types" "^4.2.5" - debug "^4.1.1" - remark-frontmatter "^1.2.0" - remark-parse "^5.0.0" - structured-source "^3.0.2" - traverse "^0.6.6" - unified "^6.1.6" + "@textlint/ast-node-types" "^12.6.1" + debug "^4.3.4" + mdast-util-gfm-autolink-literal "^0.1.3" + remark-footnotes "^3.0.0" + remark-frontmatter "^3.0.0" + remark-gfm "^1.0.0" + remark-parse "^9.0.0" + traverse "^0.6.7" + unified "^9.2.2" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" "@types/node" "*" -"@types/broccoli-plugin@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/broccoli-plugin/-/broccoli-plugin-1.3.0.tgz#38f8462fecaebc4e09a32e4d4ed1b9808f75bbca" - integrity sha512-SLk4/hFc2kGvgwNFrpn2O1juxFOllcHAywvlo7VwxfExLzoz1GGJ0oIZCwj5fwSpvHw4AWpZjJ1fUvb62PDayQ== - "@types/broccoli-plugin@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/broccoli-plugin/-/broccoli-plugin-3.0.0.tgz#290fda2270c47a568edfd0cefab8bb840d8bb7b2" @@ -3821,21 +2061,21 @@ broccoli-plugin "*" "@types/chai-as-promised@^7.1.2": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.3.tgz#779166b90fda611963a3adbfd00b339d03b747bd" - integrity sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg== + version "7.1.5" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" + integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== dependencies: "@types/chai" "*" "@types/chai@*", "@types/chai@^4.2.9": - version "4.2.15" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.15.tgz#b7a6d263c2cecf44b6de9a051cf496249b154553" - integrity sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ== + version "4.3.4" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" + integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== "@types/connect@*": - version "3.4.34" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" @@ -3845,9 +2085,11 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.12" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" - integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + version "2.8.13" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" + integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== + dependencies: + "@types/node" "*" "@types/eslint-scope@^3.7.3": version "3.7.4" @@ -3858,39 +2100,39 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== + version "8.21.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c" + integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - version "0.0.46" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" - integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== -"@types/express-serve-static-core@^4.17.18": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" - integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@^4.17.2": - version "4.17.11" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" - integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" @@ -3902,68 +2144,66 @@ "@types/node" "*" "@types/fs-extra@^8.1.0": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" - integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w== + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.2.tgz#7125cc2e4bdd9bd2fc83005ffdb1d0ba00cca61f" + integrity sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg== dependencies: "@types/node" "*" -"@types/glob@*", "@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== +"@types/glob@*": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== + dependencies: + "@types/minimatch" "^5.1.2" + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/hast@^2.0.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" - integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== dependencies: "@types/unist" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/json-schema@^7.0.5": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" - integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimatch@*", "@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/minimatch@^3.0.4": +"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*": - version "14.14.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" - integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== - -"@types/node@>=10.0.0": - version "18.7.15" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.15.tgz#20ae1ec80c57ee844b469f968a1cd511d4088b29" - integrity sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ== +"@types/node@*", "@types/node@>=10.0.0": + version "18.15.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" + integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== "@types/parse-json@^4.0.0": version "4.0.0" @@ -3971,29 +2211,29 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/qs@*": - version "6.9.6" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/rimraf@^2.0.2", "@types/rimraf@^2.0.3": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46" - integrity sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.5.tgz#368fb04d59630b727fc05a74d2ca557f64a8ef98" + integrity sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g== dependencies: "@types/glob" "*" "@types/node" "*" "@types/serve-static@*": - version "1.13.9" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== + version "1.15.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== dependencies: - "@types/mime" "^1" + "@types/mime" "*" "@types/node" "*" "@types/symlink-or-copy@^1.2.0": @@ -4002,9 +2242,9 @@ integrity sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg== "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" - integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -4273,14 +2513,14 @@ "@xtuc/long" "4.2.2" "@xmldom/xmldom@^0.8.0": - version "0.8.2" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.2.tgz#b695ff674e8216efa632a3d36ad51ae9843380c0" - integrity sha512-+R0juSseERyoPvnBQ/cZih6bpF7IpCXlWbHRoCRzYzqpz6gWHOgf8o4MOEf6KBVuOyqU+gCNLkCWVIJAro8XyQ== + version "0.8.6" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.6.tgz#8a1524eb5bd5e965c1e3735476f0262469f71440" + integrity sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg== "@xstate/fsm@^1.4.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@xstate/fsm/-/fsm-1.6.0.tgz#589cefcef426d5bf3d654edbca89e84e3b637c5f" - integrity sha512-YJpzKLPxMBUUQCTkjIbicsax6svTbPz5ykTkotIaa3kOoTnBJ4CWfC0cSQuMg7FAsfV2XWOuEsFq0dbmY7NtXg== + version "1.6.5" + resolved "https://registry.yarnpkg.com/@xstate/fsm/-/fsm-1.6.5.tgz#f599e301997ad7e3c572a0b1ff0696898081bea5" + integrity sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -4295,32 +2535,32 @@ JSV@^4.0.x: version "4.0.2" resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" - integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c= + integrity sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw== a11y-dialog@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/a11y-dialog/-/a11y-dialog-6.1.0.tgz#e7855d5116f235d7d9f8b01cfe606247f579064f" - integrity sha512-jopJLSBJrEnFgigxXk23j+QRqo5O4kHyitucFGdprZPuJnJ5nIgYfTIeNX2ZbsyybHCNPrtquCyxYvQgrH0mfg== + version "6.1.1" + resolved "https://registry.yarnpkg.com/a11y-dialog/-/a11y-dialog-6.1.1.tgz#947abaf7542fdefb466afe372a7590ff8545a2e5" + integrity sha512-bMvrxCupDFZJVHNVZFibO+qL6/BMmGI3d9oRIKpzwFpuidwe9czIrHXw256dieA0nCRadqm0GlMaK2JfqcLDkA== dependencies: focusable-selectors "^0.3.0" abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -4336,9 +2576,9 @@ acorn-import-assertions@^1.7.6: integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-node@^1.8.2: version "1.8.2" @@ -4359,20 +2599,22 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.5: - version "8.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" - integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== +acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -acorn@^8.5.0, acorn@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" aggregate-error@^3.0.0: version "3.1.0" @@ -4406,7 +2648,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -4417,9 +2659,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -4444,19 +2686,19 @@ amd-name-resolver@^1.3.1: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== -anchor-markdown-header@~0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz#045063d76e6a1f9cd327a57a0126aa0fdec371a7" - integrity sha1-BFBj125qH5zTJ6V6ASaqD97Dcac= +anchor-markdown-header@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz#908f2031281766f44ac350380ca0de77ab7065b8" + integrity sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA== dependencies: - emoji-regex "~6.1.0" + emoji-regex "~10.1.0" ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^3.2.0: version "3.2.0" @@ -4464,36 +2706,31 @@ ansi-escapes@^3.2.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + integrity sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" @@ -4503,7 +2740,7 @@ ansi-regex@^5.0.1: ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.0.0, ansi-styles@^3.2.1: version "3.2.1" @@ -4522,26 +2759,19 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= + integrity sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA== -ansi-to-html@^0.6.15: +ansi-to-html@^0.6.15, ansi-to-html@^0.6.6: version "0.6.15" resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.15.tgz#ac6ad4798a00f6aa045535d7f6a9cb9294eebea7" integrity sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ== dependencies: entities "^2.0.0" -ansi-to-html@^0.6.6: - version "0.6.14" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8" - integrity sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA== - dependencies: - entities "^1.1.2" - ansicolors@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" - integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= + integrity sha512-tOIuy1/SK/dr94ZA0ckDohKXNeBNqZ4us6PjMVLs5h1w2GBB6uPtOknp2+VF4F/zcy9LI70W+Z+pE2Soajky1w== anymatch@^2.0.0: version "2.0.0" @@ -4551,18 +2781,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -4570,7 +2792,7 @@ anymatch@~3.1.2: aot-test-generators@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/aot-test-generators/-/aot-test-generators-0.1.0.tgz#43f0f615f97cb298d7919c1b0b4e6b7310b03cd0" - integrity sha1-Q/D2Ffl8spjXkZwbC05rcxCwPNA= + integrity sha512-PKyBQsPgkrCbUZS0PexdnyS3pVfYe4U1dLLQOf3is5RcYSaxbA7fsnnj6i8hcubsz+iS0miGPSJlONv/tXjfiA== dependencies: jsesc "^2.5.0" @@ -4593,9 +2815,9 @@ are-we-there-yet@^3.0.0: readable-stream "^3.6.0" are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -4620,7 +2842,7 @@ argparse@^2.0.1: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== arr-flatten@^1.1.0: version "1.1.0" @@ -4630,44 +2852,39 @@ arr-flatten@^1.1.0: arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== array-find-index@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-range@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-range/-/array-range-1.0.1.tgz#f56e46591843611c6a56f77ef02eda7c50089bfc" - integrity sha1-9W5GWRhDYRxqVvd+8C7afFAIm/w= + integrity sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA== array-to-error@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/array-to-error/-/array-to-error-1.1.1.tgz#d68812926d14097a205579a667eeaf1856a44c07" - integrity sha1-1ogSkm0UCXogVXmmZ+6vGFakTAc= + integrity sha512-kqcQ8s7uQfg3UViYON3kCMcck3A9exxgq+riVuKy08Mx00VN4EJhK30L2VpjE58LQHKhcE/GRpvbVUhqTvqzGQ== dependencies: array-to-sentence "^1.1.0" array-to-sentence@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-to-sentence/-/array-to-sentence-1.1.0.tgz#c804956dafa53232495b205a9452753a258d39fc" - integrity sha1-yASVba+lMjJJWyBalFJ1OiWNOfw= + integrity sha512-YkwkMmPA2+GSGvXj1s9NZ6cc2LBtR+uSeWTy2IGi5MR1Wag4DdrcjTxA/YV/Fw+qKlBeXomneZgThEbm/wvZbw== array-union@^2.1.0: version "2.1.0" @@ -4677,12 +2894,22 @@ array-union@^2.1.0: array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.every@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.every/-/array.prototype.every-1.1.4.tgz#2762daecd9cec87cb63f3ca6be576817074a684e" + integrity sha512-Aui35iRZk1HHLRAyF7QP0KAnOnduaQ6fo6k1NVWfRc0xTs2AZ70ytlXvOmkC6Di4JmUs2Wv3DYzGtCQFSk5uGg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + is-string "^1.0.7" asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== asn1.js@^5.2.0: version "5.4.1" @@ -4694,23 +2921,11 @@ asn1.js@^5.2.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - assert-never@^1.1.0, assert-never@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -4722,7 +2937,7 @@ assert@^1.1.1: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== ast-types@0.13.3: version "0.13.3" @@ -4761,9 +2976,9 @@ async-disk-cache@^2.0.0: username-sync "^1.0.2" async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== async-promise-queue@^1.0.3, async-promise-queue@^1.0.5: version "1.0.5" @@ -4773,14 +2988,7 @@ async-promise-queue@^1.0.3, async-promise-queue@^1.0.5: async "^2.4.1" debug "^2.6.8" -async@^2.4.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -async@^2.6.4: +async@^2.4.1, async@^2.6.4: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== @@ -4790,12 +2998,12 @@ async@^2.6.4: async@~0.2.9: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= + integrity sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" @@ -4808,38 +3016,26 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^10.4.8: - version "10.4.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.8.tgz#92c7a0199e1cfb2ad5d9427bd585a3d75895b9e5" - integrity sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw== + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== dependencies: - browserslist "^4.21.3" - caniuse-lite "^1.0.30001373" + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -4899,7 +3095,7 @@ babel-generator@^6.26.0: babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== dependencies: babel-helper-explode-assignable-expression "^6.24.1" babel-runtime "^6.22.0" @@ -4908,7 +3104,7 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -4918,7 +3114,7 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.26.0" @@ -4928,7 +3124,7 @@ babel-helper-define-map@^6.24.1: babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== dependencies: babel-runtime "^6.22.0" babel-traverse "^6.24.1" @@ -4937,7 +3133,7 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" @@ -4948,7 +3144,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4956,7 +3152,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4964,7 +3160,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4972,7 +3168,7 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" @@ -4981,7 +3177,7 @@ babel-helper-regex@^6.24.1: babel-helper-remap-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -4992,7 +3188,7 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== dependencies: babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" @@ -5004,7 +3200,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -5014,37 +3210,32 @@ babel-import-util@^0.2.0: resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-0.2.0.tgz#b468bb679919601a3570f9e317536c54f2862e23" integrity sha512-CtWYYHU/MgK88rxMrLfkD356dApswtR/kWZ/c6JifG1m10e7tBBrs/366dFzWMAoqYmG5/JSh+94tUSpIwh+ag== -babel-import-util@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.2.2.tgz#1027560e143a4a68b1758e71d4fadc661614e495" - integrity sha512-8HgkHWt5WawRFukO30TuaL9EiDUOdvyKtDwLma4uBNeUSDbOO0/hiPfavrOWxSS6J6TKXfukWHZ3wiqZhJ8ONQ== - -babel-import-util@^1.3.0: +babel-import-util@^1.1.0, babel-import-util@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.3.0.tgz#dc9251ea39a7747bd586c1c13b8d785a42797f8e" integrity sha512-PPzUT17eAI18zn6ek1R3sB4Krc/MbnmT1MkZQFmyhjoaEGBVwNABhfVU9+EKcDSKrrOm9OIpGhjxukx1GCiy1g== babel-loader@^8.0.6, babel-loader@^8.1.0: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: babel-runtime "^6.22.0" babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== dependencies: babel-runtime "^6.22.0" @@ -5062,13 +3253,6 @@ babel-plugin-debug-macros@^0.3.3, babel-plugin-debug-macros@^0.3.4: dependencies: semver "^5.3.0" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-ember-data-packages-polyfill@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/babel-plugin-ember-data-packages-polyfill/-/babel-plugin-ember-data-packages-polyfill-0.1.2.tgz#21154c095ddc703722b1fb8bb06c126c0b6d77dc" @@ -5083,23 +3267,13 @@ babel-plugin-ember-modules-api-polyfill@^2.6.0: dependencies: ember-rfc176-data "^0.3.13" -babel-plugin-ember-modules-api-polyfill@^3.2.0, babel-plugin-ember-modules-api-polyfill@^3.4.0, babel-plugin-ember-modules-api-polyfill@^3.5.0: +babel-plugin-ember-modules-api-polyfill@^3.2.0, babel-plugin-ember-modules-api-polyfill@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-3.5.0.tgz#27b6087fac75661f779f32e60f94b14d0e9f6965" integrity sha512-pJajN/DkQUnStw0Az8c6khVcMQHgzqWr61lLNtVeu0g61LRW0k9jyK7vaedrHDWGe/Qe8sxG5wpiyW9NsMqFzA== dependencies: ember-rfc176-data "^0.3.17" -babel-plugin-ember-template-compilation@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-ember-template-compilation/-/babel-plugin-ember-template-compilation-1.0.1.tgz#64baf434ff1b751c6292936f8b9eb75a2f8149dc" - integrity sha512-V/kY6CDyUNrl5Kx6UPKUPhzSKNfdrxNii+S5zK4dgJvVyoxFv7Ykg06Ct/yskY0LkA4wUPdYN7JOBtYJwHk2sg== - dependencies: - babel-import-util "^0.2.0" - line-column "^1.0.2" - magic-string "^0.25.7" - string.prototype.matchall "^4.0.5" - babel-plugin-ember-template-compilation@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-ember-template-compilation/-/babel-plugin-ember-template-compilation-2.0.0.tgz#41d895874ba6119dd461f61993c16d1154bf8a57" @@ -5120,14 +3294,7 @@ babel-plugin-htmlbars-inline-precompile@^3.2.0: resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-3.2.0.tgz#c4882ea875d0f5683f0d91c1f72e29a4f14b5606" integrity sha512-IUeZmgs9tMUGXYu1vfke5I18yYJFldFGdNFQOWslXTnDWXzpwPih7QFduUqvT+awDpDuNtXpdt5JAf43Q1Hhzg== -babel-plugin-htmlbars-inline-precompile@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-5.0.0.tgz#b3a3008bdedbd3543e745fc953769cc10d4a7021" - integrity sha512-ZPIV7zVwVcwRyTWCp29HSwIPcvqX7PoslpKlNu53AzAx5X4QBwuMb9fFsUYY3JcriNZb5xWFOM4AE95XW0UYeA== - dependencies: - babel-plugin-ember-modules-api-polyfill "^3.4.0" - -babel-plugin-htmlbars-inline-precompile@^5.2.1, babel-plugin-htmlbars-inline-precompile@^5.3.0: +babel-plugin-htmlbars-inline-precompile@^5.0.0, babel-plugin-htmlbars-inline-precompile@^5.2.1, babel-plugin-htmlbars-inline-precompile@^5.3.0: version "5.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-5.3.1.tgz#5ba272e2e4b6221522401f5f1d98a73b1de38787" integrity sha512-QWjjFgSKtSRIcsBhJmEwS2laIdrA6na8HAlc/pEAhjHgQsah/gMiBFRZvbQTy//hWxR4BMwV7/Mya7q5H8uHeA== @@ -5139,14 +3306,14 @@ babel-plugin-htmlbars-inline-precompile@^5.2.1, babel-plugin-htmlbars-inline-pre string.prototype.matchall "^4.0.5" babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" babel-plugin-module-resolver@^3.2.0: @@ -5171,107 +3338,59 @@ babel-plugin-module-resolver@^4.1.0: reselect "^4.0.0" resolve "^1.13.1" -babel-plugin-polyfill-corejs2@^0.1.4: - version "0.1.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz#a2c5c245f56c0cac3dbddbf0726a46b24f0f81d1" - integrity sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA== - dependencies: - "@babel/compat-data" "^7.13.0" - "@babel/helper-define-polyfill-provider" "^0.1.5" - semver "^6.1.1" - -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" - -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.1.3: - version "0.1.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" - integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.5" - core-js-compat "^3.8.1" - -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.1.2: - version "0.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f" - integrity sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.5" - -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-strip-function-call@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/babel-plugin-strip-function-call/-/babel-plugin-strip-function-call-1.0.2.tgz#374a68b5648e16e2b6d1effd280c3abc88648e3a" - integrity sha1-N0potWSOFuK20e/9KAw6vIhkjjo= + integrity sha512-2K0dgOk0AMceFHEpizpQU35nVwZ3HdygyXDedVv88+UkxjAH88k7ns8giaRkc8Tfjw6fPDvHkTC40xbI3bpbUA== babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= + integrity sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA== babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== dependencies: babel-helper-remap-async-to-generator "^6.24.1" babel-plugin-syntax-async-functions "^6.8.0" @@ -5280,21 +3399,21 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.23.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== dependencies: babel-runtime "^6.26.0" babel-template "^6.26.0" @@ -5305,7 +3424,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0: babel-plugin-transform-es2015-classes@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== dependencies: babel-helper-define-map "^6.24.1" babel-helper-function-name "^6.24.1" @@ -5320,7 +3439,7 @@ babel-plugin-transform-es2015-classes@^6.23.0: babel-plugin-transform-es2015-computed-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -5328,14 +3447,14 @@ babel-plugin-transform-es2015-computed-properties@^6.22.0: babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-duplicate-keys@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -5343,14 +3462,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.22.0: babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-function-name@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -5359,14 +3478,14 @@ babel-plugin-transform-es2015-function-name@^6.22.0: babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" @@ -5385,7 +3504,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-plugin-transform-es2015-modules-systemjs@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -5394,7 +3513,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0: babel-plugin-transform-es2015-modules-umd@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" @@ -5403,7 +3522,7 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0: babel-plugin-transform-es2015-object-super@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" @@ -5411,7 +3530,7 @@ babel-plugin-transform-es2015-object-super@^6.22.0: babel-plugin-transform-es2015-parameters@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== dependencies: babel-helper-call-delegate "^6.24.1" babel-helper-get-function-arity "^6.24.1" @@ -5423,7 +3542,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0: babel-plugin-transform-es2015-shorthand-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -5431,14 +3550,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.22.0: babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-sticky-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -5447,21 +3566,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.22.0: babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-unicode-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -5470,7 +3589,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0: babel-plugin-transform-exponentiation-operator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== dependencies: babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" babel-plugin-syntax-exponentiation-operator "^6.8.0" @@ -5479,14 +3598,14 @@ babel-plugin-transform-exponentiation-operator@^6.22.0: babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== dependencies: regenerator-transform "^0.10.0" babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -5494,7 +3613,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + integrity sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ== dependencies: babel-runtime "^6.26.0" core-js "^2.5.0" @@ -5539,7 +3658,7 @@ babel-preset-env@^1.7.0: babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -5552,7 +3671,7 @@ babel-register@^6.26.0: babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -5560,7 +3679,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -5571,7 +3690,7 @@ babel-template@^6.24.1, babel-template@^6.26.0: babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -5586,7 +3705,7 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -5596,7 +3715,7 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: babel6-plugin-strip-class-callcheck@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel6-plugin-strip-class-callcheck/-/babel6-plugin-strip-class-callcheck-6.0.0.tgz#de841c1abebbd39f78de0affb2c9a52ee228fddf" - integrity sha1-3oQcGr6705943gr/ssmlLuIo/d8= + integrity sha512-biNFJ7JAK4+9BwswDGL0dmYpvXHvswOFR/iKg3Q/f+pNxPEa5bWZkLHI1fW4spPytkHGMe7f/XtYyhzml9hiWg== babylon@^6.18.0: version "6.18.0" @@ -5604,9 +3723,9 @@ babylon@^6.18.0: integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== backbone@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.4.0.tgz#54db4de9df7c3811c3f032f34749a4cd27f3bd12" - integrity sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ== + version "1.4.1" + resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.4.1.tgz#099a78184bc07b034048a8332229c2ccca1e3e62" + integrity sha512-ADy1ztN074YkWbHi8ojJVFe3vAanO/lrzMGZWUClIP7oDD/Pjy2vrASraUP+2EVCfIiTtCW4FChVow01XneivA== dependencies: underscore ">=1.8.3" @@ -5621,9 +3740,9 @@ bail@^1.0.0: integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" @@ -5655,13 +3774,6 @@ basic-auth@~2.0.1: dependencies: safe-buffer "5.1.2" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -5701,7 +3813,7 @@ bl@^4.1.0: blank-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/blank-object/-/blank-object-1.0.2.tgz#f990793fbe9a8c8dd013fb3219420bec81d5f4b9" - integrity sha1-+ZB5P76ajI3QE/syGUIL7IHV9Lk= + integrity sha512-kXQ19Xhoghiyw66CUiGypnuRpWlbHAzY/+NyvqTEdTfhfQGH1/dbEMYiXju7fYKIFePpzp/y9dsu5Cu/PkmawQ== bluebird@^3.4.6, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" @@ -5709,9 +3821,9 @@ bluebird@^3.4.6, bluebird@^3.5.5, bluebird@^3.7.2: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== blueimp-md5@^2.10.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.18.0.tgz#1152be1335f0c6b3911ed9e36db54f3e6ac52935" - integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== + version "2.19.0" + resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" + integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" @@ -5719,41 +3831,56 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.19.0, body-parser@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.19.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" body@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" - integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= + integrity sha512-chUsBxGRtuElD6fmw1gHLpvnKdVLK302peeFa9ZqAEk8TyzZ3fygLyUEDDPTJvL9+Bor0dIwn6ePOsRM2y0zQQ== dependencies: continuable-cache "^0.3.1" error "^7.0.0" raw-body "~1.1.0" safe-json-parse "~1.0.1" -boundary@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/boundary/-/boundary-1.0.1.tgz#4d67dc2602c0cc16dd9bce7ebf87e948290f5812" - integrity sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI= - bower-config@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.3.tgz#3454fecdc5f08e7aa9cc6d556e492be0669689ae" @@ -5769,7 +3896,7 @@ bower-config@^1.4.3: bower-endpoint-parser@0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz#00b565adbfab6f2d35addde977e97962acbcb3f6" - integrity sha1-ALVlrb+rby01rd3pd+l5Yqy8s/Y= + integrity sha512-YWZHhWkPdXtIfH3VRu3QIV95sa75O9vrQWBOHjexWCLBCTy5qJvRr36LXTqFwTchSXVlzy5piYJOjzHr7qhsNg== brace-expansion@^1.1.7: version "1.1.11" @@ -5795,7 +3922,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -5846,9 +3973,9 @@ broccoli-babel-transpiler@^6.5.0: workerpool "^2.3.0" broccoli-babel-transpiler@^7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-7.8.0.tgz#7e0f01fce5739f49bbadeee7f1e625ca51cad66e" - integrity sha512-dv30Td5uL7dO3NzQUqQKQs+Iq7JGKnCNtvc6GBO76uVPqGnRlsQZcYqdBVr33JrctR+ZrpTUf7TjsFKeDRFA8Q== + version "7.8.1" + resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-7.8.1.tgz#a5dc04cf4f59de98124fc128683ab2b83e5d28c1" + integrity sha512-6IXBgfRt7HZ61g67ssBc6lBb3Smw3DPZ9dEYirgtvXWpRZ2A9M22nxy6opEwJDgDJzlu/bB7ToppW33OFkA1gA== dependencies: "@babel/core" "^7.12.0" "@babel/polyfill" "^7.11.5" @@ -5866,7 +3993,7 @@ broccoli-babel-transpiler@^7.8.0: broccoli-bridge@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/broccoli-bridge/-/broccoli-bridge-1.0.0.tgz#6223fd64b62062c31333539f0f3c42d0acd92fb1" - integrity sha1-YiP9ZLYgYsMTM1OfDzxC0KzZL7E= + integrity sha512-WvU6T6AJrtpFSScgyCVEFAajPAJTOYYIIpGvs/PbkSq9OUBvI3/IEUHg+Ipx376M/clGFwa7K9crEtpauqC66A== dependencies: broccoli-plugin "^1.3.0" fs-extra "^7.0.0" @@ -5875,7 +4002,7 @@ broccoli-bridge@^1.0.0: broccoli-builder@^0.18.14: version "0.18.14" resolved "https://registry.yarnpkg.com/broccoli-builder/-/broccoli-builder-0.18.14.tgz#4b79e2f844de11a4e1b816c3f49c6df4776c312d" - integrity sha1-S3ni+ETeEaThuBbD9Jxt9HdsMS0= + integrity sha512-YoUHeKnPi4xIGZ2XDVN9oHNA9k3xF5f5vlA+1wvrxIIDXqQU97gp2FxVAF503Zxdtt0C5CRB5n+47k2hlkaBzA== dependencies: broccoli-node-info "^1.1.0" heimdalljs "^0.2.0" @@ -5888,7 +4015,7 @@ broccoli-builder@^0.18.14: broccoli-caching-writer@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/broccoli-caching-writer/-/broccoli-caching-writer-2.3.1.tgz#b93cf58f9264f003075868db05774f4e7f25bd07" - integrity sha1-uTz1j5Jk8AMHWGjbBXdPTn8lvQc= + integrity sha512-lfoDx98VaU8tG4mUXCxKdKyw2Lr+iSIGUjCgV83KC2zRC07SzYTGuSsMqpXFiOQlOGuoJxG3NRoyniBa1BWOqA== dependencies: broccoli-kitchen-sink-helpers "^0.2.5" broccoli-plugin "1.1.0" @@ -5900,7 +4027,7 @@ broccoli-caching-writer@^2.2.0: broccoli-caching-writer@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/broccoli-caching-writer/-/broccoli-caching-writer-3.0.3.tgz#0bd2c96a9738d6a6ab590f07ba35c5157d7db476" - integrity sha1-C9LJapc41qarWQ8HujXFFX19tHY= + integrity sha512-g644Kb5uBPsy+6e2DvO3sOc+/cXZQQNgQt64QQzjA9TSdP0dl5qvetpoNIx4sy/XIjrPYG1smEidq9Z9r61INw== dependencies: broccoli-kitchen-sink-helpers "^0.3.1" broccoli-plugin "^1.2.1" @@ -5912,31 +4039,14 @@ broccoli-caching-writer@^3.0.3: broccoli-clean-css@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-clean-css/-/broccoli-clean-css-1.1.0.tgz#9db143d9af7e0ae79c26e3ac5a9bb2d720ea19fa" - integrity sha1-nbFD2a9+CuecJuOsWpuy1yDqGfo= + integrity sha512-S7/RWWX+lL42aGc5+fXVLnwDdMtS0QEWUFalDp03gJ9Na7zj1rWa351N2HZ687E2crM9g+eDWXKzD17cbcTepg== dependencies: broccoli-persistent-filter "^1.1.6" clean-css-promise "^0.1.0" inline-source-map-comment "^1.0.5" json-stable-stringify "^1.0.0" -broccoli-concat@^4.2.2, broccoli-concat@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/broccoli-concat/-/broccoli-concat-4.2.4.tgz#78e359ddc540b999d815355163bf3cfb6bd67322" - integrity sha512-NgdBIE57r+U/AslBohQr0mCS7PopIWL8dihMI1CzqffQkisAgqWMuddjYmizqRBQlml7crBFaBeUnPDHhf4/RQ== - dependencies: - broccoli-debug "^0.6.5" - broccoli-kitchen-sink-helpers "^0.3.1" - broccoli-plugin "^4.0.2" - ensure-posix-path "^1.0.2" - fast-sourcemap-concat "^2.1.0" - find-index "^1.1.0" - fs-extra "^8.1.0" - fs-tree-diff "^2.0.1" - lodash.merge "^4.6.2" - lodash.omit "^4.1.0" - lodash.uniq "^4.2.0" - -broccoli-concat@^4.2.5: +broccoli-concat@^4.2.2, broccoli-concat@^4.2.4, broccoli-concat@^4.2.5: version "4.2.5" resolved "https://registry.yarnpkg.com/broccoli-concat/-/broccoli-concat-4.2.5.tgz#d578f00094048b5fc87195e82fbdbde20d838d29" integrity sha512-dFB5ATPwOyV8S2I7a07HxCoutoq23oY//LhM6Mou86cWUTB174rND5aQLR7Fu8FjFFLxoTbkk7y0VPITJ1IQrw== @@ -5963,7 +4073,7 @@ broccoli-config-loader@^1.0.1: broccoli-config-replace@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/broccoli-config-replace/-/broccoli-config-replace-1.1.2.tgz#6ea879d92a5bad634d11329b51fc5f4aafda9c00" - integrity sha1-bqh52SpbrWNNETKbUfxfSq/anAA= + integrity sha512-qLlEY3V7p3ZWJNRPdPgwIM77iau1qR03S9BupMMFngjzBr7S6RSzcg96HbCYXmW9gfTbjRm9FC4CQT81SBusZg== dependencies: broccoli-kitchen-sink-helpers "^0.3.1" broccoli-plugin "^1.2.0" @@ -6016,7 +4126,7 @@ broccoli-filter@^1.2.2, broccoli-filter@^1.2.3: broccoli-funnel-reducer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/broccoli-funnel-reducer/-/broccoli-funnel-reducer-1.0.0.tgz#11365b2a785aec9b17972a36df87eef24c5cc0ea" - integrity sha1-ETZbKnha7JsXlyo234fu8kxcwOo= + integrity sha512-SaOCEdh+wnt2jFUV2Qb32m7LXyElvFwW3NKNaEJyi5PGQNwxfqpkc0KI6AbQANKgdj/40U2UC0WuGThFwuEUaA== broccoli-funnel@2.0.1: version "2.0.1" @@ -6040,7 +4150,7 @@ broccoli-funnel@2.0.1: broccoli-funnel@^1.0.1, broccoli-funnel@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-1.2.0.tgz#cddc3afc5ff1685a8023488fff74ce6fb5a51296" - integrity sha1-zdw6/F/xaFqAI0iP/3TOb7WlEpY= + integrity sha512-0pbFNUA5Ml+gPPd58Rj/M26OS21+bMiV0F+m6+9OVzAhAdppVLxylSsXfWAt2WOD3kS+D8UsDv6GSmnZhbw/dw== dependencies: array-equal "^1.0.0" blank-object "^1.0.1" @@ -6076,7 +4186,7 @@ broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1, broccoli-funnel@^2.0.2: symlink-or-copy "^1.0.0" walk-sync "^0.3.1" -broccoli-funnel@^3.0.0, broccoli-funnel@^3.0.5, broccoli-funnel@^3.0.8: +broccoli-funnel@^3.0.0, broccoli-funnel@^3.0.2, broccoli-funnel@^3.0.3, broccoli-funnel@^3.0.5, broccoli-funnel@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-3.0.8.tgz#f5b62e2763c3918026a15a3c833edc889971279b" integrity sha512-ng4eIhPYiXqMw6SyGoxPHR3YAwEd2lr9FgBI1CyTbspl4txZovOsmzFkMkGAlu88xyvYXJqHiM2crfLa65T1BQ== @@ -6089,26 +4199,10 @@ broccoli-funnel@^3.0.0, broccoli-funnel@^3.0.5, broccoli-funnel@^3.0.8: minimatch "^3.0.0" walk-sync "^2.0.2" -broccoli-funnel@^3.0.1, broccoli-funnel@^3.0.2, broccoli-funnel@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-3.0.3.tgz#26fd42632471f67a91f4770d1987118087219937" - integrity sha512-LPzZ91BwStoHZXdXHQAJeYORl189OrRKM5NdIi86SDU9wZ4s/3lV1PRFOiobDT/jKM10voM7CDzfvicHbCYxAQ== - dependencies: - array-equal "^1.0.0" - blank-object "^1.0.1" - broccoli-plugin "^4.0.1" - debug "^4.1.1" - fast-ordered-set "^1.0.0" - fs-tree-diff "^2.0.1" - heimdalljs "^0.2.0" - minimatch "^3.0.0" - path-posix "^1.0.0" - walk-sync "^2.0.2" - broccoli-kitchen-sink-helpers@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/-/broccoli-kitchen-sink-helpers-0.2.9.tgz#a5e0986ed8d76fb5984b68c3f0450d3a96e36ecc" - integrity sha1-peCYbtjXb7WYS2jD8EUNOpbjbsw= + integrity sha512-C+oEqivDofZv/h80rgN4WJkbZkbfwkrIeu8vFn4bb4m4jPd3ICNNplhkXGl3ps439pzc2yjZ1qIwz0yy8uHcQg== dependencies: glob "^5.0.10" mkdirp "^0.5.1" @@ -6116,7 +4210,7 @@ broccoli-kitchen-sink-helpers@^0.2.5: broccoli-kitchen-sink-helpers@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/-/broccoli-kitchen-sink-helpers-0.3.1.tgz#77c7c18194b9664163ec4fcee2793444926e0c06" - integrity sha1-d8fBgZS5ZkFj7E/O4nk0RJJuDAY= + integrity sha512-gqYnKSJxBSjj/uJqeuRAzYVbmjWhG0mOZ8jrp6+fnUIOgLN6MvI7XxBECDHkYMIFPJ8Smf4xaI066Q2FqQDnXg== dependencies: glob "^5.0.10" mkdirp "^0.5.1" @@ -6134,7 +4228,7 @@ broccoli-merge-files@^0.8.0: broccoli-merge-trees@^1.0.0, broccoli-merge-trees@^1.1.1: version "1.2.4" resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-1.2.4.tgz#a001519bb5067f06589d91afa2942445a2d0fdb5" - integrity sha1-oAFRm7UGfwZYnZGvopQkRaLQ/bU= + integrity sha512-RXJAleytlED0dxXGEo2EXwrg5cCesY8LQzzGRogwGQmluoz+ijzxajpyWAW6wu/AyuQZj1vgnIqnld8jvuuXtQ== dependencies: broccoli-plugin "^1.3.0" can-symlink "^1.0.0" @@ -6187,12 +4281,12 @@ broccoli-node-api@^1.6.0, broccoli-node-api@^1.7.0: broccoli-node-info@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-node-info/-/broccoli-node-info-1.1.0.tgz#3aa2e31e07e5bdb516dd25214f7c45ba1c459412" - integrity sha1-OqLjHgflvbUW3SUhT3xFuhxFlBI= + integrity sha512-DUohSZCdfXli/3iN6SmxPbck1OVG8xCkrLx47R25his06xVc1ZmmrOsrThiM8BsCWirwyocODiYJqNP5W2Hg1A== broccoli-node-info@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/broccoli-node-info/-/broccoli-node-info-2.1.0.tgz#ca84560e8570ff78565bea1699866ddbf58ad644" - integrity sha512-l6qDuboJThHfRVVWQVaTs++bFdrFTP0gJXgsWenczc1PavRVUmL1Eyb2swTAXXMpDOnr2zhNOBLx4w9AxkqbPQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/broccoli-node-info/-/broccoli-node-info-2.2.0.tgz#feb01c13020792f429e01d7f7845dc5b3a7932b3" + integrity sha512-VabSGRpKIzpmC+r+tJueCE5h8k6vON7EIMMWu6d/FyPdtijwLQ7QvzShEw+m3mHoDzUaj/kiZsDYrS8X2adsBg== broccoli-output-wrapper@^2.0.0: version "2.0.0" @@ -6249,7 +4343,7 @@ broccoli-persistent-filter@^2.1.0, broccoli-persistent-filter@^2.2.1, broccoli-p sync-disk-cache "^1.3.3" walk-sync "^1.0.0" -broccoli-persistent-filter@^3.1.1: +broccoli-persistent-filter@^3.1.1, broccoli-persistent-filter@^3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-3.1.3.tgz#aca815bf3e3b0247bd0a7b567fdb0d0e08c99cc2" integrity sha512-Q+8iezprZzL9voaBsDY3rQVl7c7H5h+bvv8SpzCZXPZgfBFCbx7KFQ2c3rZR6lW5k4Kwoqt7jG+rZMUg67Gwxw== @@ -6266,24 +4360,7 @@ broccoli-persistent-filter@^3.1.1: symlink-or-copy "^1.0.1" sync-disk-cache "^2.0.0" -broccoli-persistent-filter@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-3.1.2.tgz#41da6b9577be09a170ecde185f2c5a6099f99c4e" - integrity sha512-CbU95RXXVyy+eJV9XTiHUC7NnsY3EvdVrGzp3YgyvO2bzXZFE5/GzDp4X/VQqX+jsk4qyT1HvMOF0sD1DX68TQ== - dependencies: - async-disk-cache "^2.0.0" - async-promise-queue "^1.0.3" - broccoli-plugin "^4.0.3" - fs-tree-diff "^2.0.0" - hash-for-dep "^1.5.0" - heimdalljs "^0.2.1" - heimdalljs-logger "^0.1.7" - promise-map-series "^0.2.1" - rimraf "^3.0.0" - symlink-or-copy "^1.0.1" - sync-disk-cache "^2.0.0" - -broccoli-plugin@*, broccoli-plugin@^4.0.5, broccoli-plugin@^4.0.7: +broccoli-plugin@*, broccoli-plugin@^4.0.0, broccoli-plugin@^4.0.1, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3, broccoli-plugin@^4.0.5, broccoli-plugin@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz#dd176a85efe915ed557d913744b181abe05047db" integrity sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg== @@ -6299,7 +4376,7 @@ broccoli-plugin@*, broccoli-plugin@^4.0.5, broccoli-plugin@^4.0.7: broccoli-plugin@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.1.0.tgz#73e2cfa05f8ea1e3fc1420c40c3d9e7dc724bf02" - integrity sha1-c+LPoF+OoeP8FCDEDD2efcckvwI= + integrity sha512-dY1QsA20of9wWEto8yhN7JQjpfjySmgeIMsvnQ9aBAv1wEJJCe04B0ekdgq7Bduyx9yWXdoC5CngGy81swmp2w== dependencies: promise-map-series "^0.2.1" quick-temp "^0.1.3" @@ -6316,7 +4393,7 @@ broccoli-plugin@^1.0.0, broccoli-plugin@^1.1.0, broccoli-plugin@^1.2.0, broccoli rimraf "^2.3.4" symlink-or-copy "^1.1.8" -broccoli-plugin@^2.0.0, broccoli-plugin@^2.1.0: +broccoli-plugin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-2.1.0.tgz#2fab6c578219cfcc64f773e9616073313fc8b334" integrity sha512-ElE4caljW4slapyEhSD9jU9Uayc8SoSABWdmY9SqbV8DHNxU6xg1jJsPcMm+cXOvggR3+G+OXAYQeFjWVnznaw== @@ -6339,19 +4416,6 @@ broccoli-plugin@^3.1.0: rimraf "^2.3.4" symlink-or-copy "^1.1.8" -broccoli-plugin@^4.0.0, broccoli-plugin@^4.0.1, broccoli-plugin@^4.0.2, broccoli-plugin@^4.0.3: - version "4.0.5" - resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-4.0.5.tgz#71e5597f31a652c0e0a6bcb7bbdb50142cc5c959" - integrity sha512-WA8FQP2EQCBOd1Z6RhXlyTyt/F+sJEwWGTCUrIIBDxHhSURibPW/n0NfwgLdEZSD8/3Ec4B9L3PUqaWxVuVC2A== - dependencies: - broccoli-node-api "^1.7.0" - broccoli-output-wrapper "^3.2.5" - fs-merger "^3.1.0" - promise-map-series "^0.3.0" - quick-temp "^0.1.8" - rimraf "^3.0.2" - symlink-or-copy "^1.3.1" - broccoli-postcss-single@^5.0.1: version "5.0.2" resolved "https://registry.yarnpkg.com/broccoli-postcss-single/-/broccoli-postcss-single-5.0.2.tgz#f23661b3011494d8a2dbd8ff39eb394e80313682" @@ -6375,21 +4439,6 @@ broccoli-postcss@^6.0.1: object-assign "^4.1.1" postcss "^8.1.4" -broccoli-rollup@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/broccoli-rollup/-/broccoli-rollup-4.1.1.tgz#7531a24d88ddab9f1bace1c6ee6e6ca74a38d36f" - integrity sha512-hkp0dB5chiemi32t6hLe5bJvxuTOm1TU+SryFlZIs95KT9+94uj0C8w6k6CsZ2HuIdIZg6D252t4gwOlcTXrpA== - dependencies: - "@types/broccoli-plugin" "^1.3.0" - broccoli-plugin "^2.0.0" - fs-tree-diff "^2.0.1" - heimdalljs "^0.2.6" - node-modules-path "^1.0.1" - rollup "^1.12.0" - rollup-pluginutils "^2.8.1" - symlink-or-copy "^1.2.0" - walk-sync "^1.1.3" - broccoli-rollup@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/broccoli-rollup/-/broccoli-rollup-5.0.0.tgz#a77b53bcef1b70e988913fee82265c0a4ca530da" @@ -6406,15 +4455,13 @@ broccoli-rollup@^5.0.0: walk-sync "^2.2.0" broccoli-sass-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/broccoli-sass-source-maps/-/broccoli-sass-source-maps-4.0.0.tgz#1ee4c10a810b10955b0502e28f85ab672f5961a2" - integrity sha512-Bjgg0Q626pPwiPU+Sk7jJNjblPEwhceuTzMPw2F5XY+FzdTBMYQKuJYlJ4x2DdsubE95e3rVQeSZ68jA13Nhzg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/broccoli-sass-source-maps/-/broccoli-sass-source-maps-4.1.0.tgz#e0843d2cef17b788a8fc000be84af29b4c3049bc" + integrity sha512-So3gTlP9AEJTponlRoL9Ti+xaMX1LnJUWD52mVT0Oq6PI8nIjX97XMW91JfY/4CXsprIDyGe/7rkiauE+XHdPQ== dependencies: broccoli-caching-writer "^3.0.3" include-path-searcher "^0.1.0" - mkdirp "^0.3.5" - object-assign "^2.0.0" - rsvp "^3.0.6" + rsvp "^4.8.5" broccoli-slow-trees@^3.0.1, broccoli-slow-trees@^3.1.0: version "3.1.0" @@ -6426,7 +4473,7 @@ broccoli-slow-trees@^3.0.1, broccoli-slow-trees@^3.1.0: broccoli-source@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-source/-/broccoli-source-1.1.0.tgz#54f0e82c8b73f46580cbbc4f578f0b32fca8f809" - integrity sha1-VPDoLItz9GWAy7xPV48LMvyo+Ak= + integrity sha512-ahvqmwF6Yvh6l+sTJJdey4o4ynwSH8swSSBSGmUXGSPPCqBWvquWB/4rWN65ZArKilBFq/29O0yQnZNIf//sTg== broccoli-source@^2.1.2: version "2.1.2" @@ -6443,7 +4490,7 @@ broccoli-source@^3.0.0: broccoli-sri-hash@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/broccoli-sri-hash/-/broccoli-sri-hash-2.1.2.tgz#bc69905ed7a381ad325cc0d02ded071328ebf3f3" - integrity sha1-vGmQXtejga0yXMDQLe0HEyjr8/M= + integrity sha512-toLD/v7ut2ajcH8JsdCMG2Bpq2qkwTcKM6CMzVMSAJjaz/KpK69fR+gSqe1dsjh+QTdxG0yVvkq3Sij/XMzV6A== dependencies: broccoli-caching-writer "^2.2.0" mkdirp "^0.5.1" @@ -6520,7 +4567,7 @@ broccoli@^3.5.1: brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-process-hrtime@^1.0.0: version "1.0.0" @@ -6596,37 +4643,15 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.14.5, browserslist@^4.16.3: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - -browserslist@^4.17.5, browserslist@^4.19.1: - version "4.19.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" - integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== - dependencies: - caniuse-lite "^1.0.30001312" - electron-to-chromium "^1.4.71" - escalade "^3.1.1" - node-releases "^2.0.2" - picocolors "^1.0.0" - -browserslist@^4.20.2, browserslist@^4.21.3: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" bser@2.1.1: version "2.1.1" @@ -6636,14 +4661,14 @@ bser@2.1.1: node-int64 "^0.4.0" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer@^4.3.0: version "4.9.2" @@ -6665,27 +4690,27 @@ buffer@^5.5.0: builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== bytes@1: version "1.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" - integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= + integrity sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ== bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^12.0.2: version "12.0.4" @@ -6723,6 +4748,13 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +calculate-cache-key-for-tree@2.0.0, calculate-cache-key-for-tree@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/calculate-cache-key-for-tree/-/calculate-cache-key-for-tree-2.0.0.tgz#7ac57f149a4188eacb0a45b210689215d3fef8d6" + integrity sha512-Quw8a6y8CPmRd6eU+mwypktYCwUcf8yVFIRbNZ6tPQEckX9yd+EBVEPC/GSZZrMWH9e7Vz4pT7XhpmyApRByLQ== + dependencies: + json-stable-stringify "^1.0.1" + calculate-cache-key-for-tree@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/calculate-cache-key-for-tree/-/calculate-cache-key-for-tree-1.2.3.tgz#5a5e4fcfa2d374a63e47fe967593f179e8282825" @@ -6730,13 +4762,6 @@ calculate-cache-key-for-tree@^1.1.0: dependencies: json-stable-stringify "^1.0.1" -calculate-cache-key-for-tree@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/calculate-cache-key-for-tree/-/calculate-cache-key-for-tree-2.0.0.tgz#7ac57f149a4188eacb0a45b210689215d3fef8d6" - integrity sha512-Quw8a6y8CPmRd6eU+mwypktYCwUcf8yVFIRbNZ6tPQEckX9yd+EBVEPC/GSZZrMWH9e7Vz4pT7XhpmyApRByLQ== - dependencies: - json-stable-stringify "^1.0.1" - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -6746,9 +4771,9 @@ call-bind@^1.0.0, call-bind@^1.0.2: get-intrinsic "^1.0.2" call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" @@ -6768,24 +4793,14 @@ camelcase@^5.3.1: can-symlink@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/can-symlink/-/can-symlink-1.0.0.tgz#97b607d8a84bb6c6e228b902d864ecb594b9d219" - integrity sha1-l7YH2KhLtsbiKLkC2GTstZS50hk= + integrity sha512-RbsNrFyhwkx+6psk/0fK/Q9orOUr9VMxohGd8vTa4djf4TGLfblBgUfqZChrZuW0Q+mz2eBPFLusw9Jfukzmhg== dependencies: tmp "0.0.28" -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001181: - version "1.0.30001203" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz#a7a34df21a387d9deffcd56c000b8cf5ab540580" - integrity sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w== - -caniuse-lite@^1.0.30001312: - version "1.0.30001312" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== - -caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373: - version "1.0.30001384" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001384.tgz#029527c2d781a3cfef13fa63b3a78a6088e35973" - integrity sha512-BBWt57kqWbc0GYZXb47wTXpmAgqr5LSibPzNjk/AWMdmJMQhLqOl3c/Kd4OAU/tu4NLfYkMx8Tlq3RVBkOBolQ== +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001464" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz#888922718df48ce5e33dcfe1a2af7d42676c5eb7" + integrity sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g== capture-exit@^2.0.0: version "2.0.0" @@ -6797,16 +4812,11 @@ capture-exit@^2.0.0: cardinal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" - integrity sha1-UOIcGwqjdyn5N33vGWtanOyTLuk= + integrity sha512-INsuF4GyiFLk8C91FPokbKTc/rwHqV4JnfatVZ6GPhguP1qmkRWX2dp5tepYboYdPpGWisLVLI+KsXoXFPRSMg== dependencies: ansicolors "~0.2.1" redeyed "~1.0.0" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -6815,12 +4825,12 @@ ccount@^1.0.0: ceibo@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ceibo/-/ceibo-2.0.0.tgz#9a61eb054a91c09934588d4e45d9dd2c3bf04eee" - integrity sha1-mmHrBUqRwJk0WI1ORdndLDvwTu4= + integrity sha512-Zt+Nhkzd1s9hsOhEmCMkmzAn1AmjQ/RuEnXOF3H46NYlkrQoApA8PIiacz/YASdxeFse1F50B7eoppw4pPie6g== chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -6846,9 +4856,9 @@ chalk@^3.0.0: supports-color "^7.1.0" chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -6856,7 +4866,7 @@ chalk@^4.0.0, chalk@^4.1.0: chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= + integrity sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ== dependencies: ansi-styles "~1.0.0" has-color "~0.1.0" @@ -6890,26 +4900,11 @@ chardet@^0.7.0: charm@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/charm/-/charm-1.0.2.tgz#8add367153a6d9a581331052c4090991da995e35" - integrity sha1-it02cVOm2aWBMxBSxAkJkdqZXjU= + integrity sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw== dependencies: inherits "^2.0.1" -"chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -6949,11 +4944,9 @@ chownr@^1.1.1: integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" @@ -6986,12 +4979,12 @@ cldr-core@^36.0.0: clean-base-url@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clean-base-url/-/clean-base-url-1.0.0.tgz#c901cf0a20b972435b0eccd52d056824a4351b7b" - integrity sha1-yQHPCiC5ckNbDszVLQVoJKQ1G3s= + integrity sha512-9q6ZvUAhbKOSRFY7A/irCQ/rF0KIpa3uXpx6izm8+fp7b2H4hLeUJ+F1YYk9+gDQ/X8Q0MEyYs+tG3cht//HTg== clean-css-promise@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/clean-css-promise/-/clean-css-promise-0.1.1.tgz#43f3d2c8dfcb2bf071481252cd9b76433c08eecb" - integrity sha1-Q/PSyN/LK/BxSBJSzZt2QzwI7ss= + integrity sha512-tzWkANXMD70ETa/wAu2TXAAxYWS0ZjVUFM2dVik8RQBoAbGMFJv4iVluz3RpcoEbo++fX4RV/BXfgGoOjp8o3Q== dependencies: array-to-error "^1.0.0" clean-css "^3.4.5" @@ -7000,7 +4993,7 @@ clean-css-promise@^0.1.0: clean-css@^3.4.5: version "3.4.28" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.28.tgz#bf1945e82fc808f55695e6ddeaec01400efd03ff" - integrity sha1-vxlF6C/ICPVWlebd6uwBQA79A/8= + integrity sha512-aTWyttSdI2mYi07kWqHi24NUU9YlELFKGOAgFzZjDN1064DMAOy2FBuoyGmkKRlXkbpXd0EVHmiVkbKhKoirTw== dependencies: commander "2.8.x" source-map "0.4.x" @@ -7018,7 +5011,7 @@ clean-up-path@^1.0.0: cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" @@ -7030,23 +5023,23 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.0.0, cli-spinners@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== cli-table3@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: string-width "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" cli-table@^0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" - integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== + version "0.3.11" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" @@ -7068,10 +5061,10 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -clipboard@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.8.tgz#ffc6c103dd2967a83005f3f61976aa4655a4cdba" - integrity sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ== +clipboard@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5" + integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== dependencies: good-listener "^1.2.2" select "^1.1.2" @@ -7089,32 +5082,27 @@ cliui@^7.0.2: clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== clone@^2.0.0, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== codemirror@~5.15.0: version "5.15.2" resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.15.2.tgz#58b3dc732c6d10d7aae806f4c7cdd56a9b87fe8f" - integrity sha1-WLPccyxtENeq6Ab0x83VapuH/o8= - -collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + integrity sha512-QHZClCGimKVK86/+K1YcKwa2/9pzy5OfAsv0nsXlPxxoWOhGc+HxPWQISnIrYMHwA5QCtiObxo5O/tmV4fzOSQ== collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -7136,7 +5124,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" @@ -7148,22 +5136,22 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -colorette@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +colorette@^2.0.16: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -7178,7 +5166,7 @@ comma-separated-tokens@^1.0.0: commander@2.8.x: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + integrity sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ== dependencies: graceful-readlink ">= 1.0.0" @@ -7197,20 +5185,20 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^6.2.0: +commander@^6.2.0, commander@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compare-versions@^3.6.0: version "3.6.0" @@ -7245,7 +5233,7 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.0: version "1.6.2" @@ -7287,7 +5275,7 @@ console-browserify@^1.1.0: console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== console-ui@^3.0.4, console-ui@^3.1.2: version "3.1.2" @@ -7310,55 +5298,58 @@ consolidate@^0.16.0: constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== continuable-cache@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" - integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= + integrity sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA== convert-source-map@^1.5.1, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-parser@^1.4.4: - version "1.4.5" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" - integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== + version "1.4.6" + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" + integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== dependencies: - cookie "0.4.0" + cookie "0.4.1" cookie-signature "1.0.6" cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@~0.4.1: +cookie@0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -7374,36 +5365,19 @@ copy-concurrently@^1.0.0: copy-dereference@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/copy-dereference/-/copy-dereference-1.0.0.tgz#6b131865420fd81b413ba994b44d3655311152b6" - integrity sha1-axMYZUIP2BtBO6mUtE02VTERUrY= + integrity sha512-40TSLuhhbiKeszZhK9LfNdazC67Ue4kq/gGwN5sdxEUWPXTIMmKmGmgD9mPfNKVAeecEW+NfEIpBaZoACCQLLw== copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== - dependencies: - browserslist "^4.19.1" - semver "7.0.0" - -core-js-compat@^3.22.1: - version "3.25.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.0.tgz#489affbfbf9cb3fa56192fe2dd9ebaee985a66c5" - integrity sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow== - dependencies: - browserslist "^4.21.3" - semver "7.0.0" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.8.1, core-js-compat@^3.9.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455" - integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== +core-js-compat@^3.25.1: + version "3.29.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.0.tgz#1b8d9eb4191ab112022e7f6364b99b65ea52f528" + integrity sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ== dependencies: - browserslist "^4.16.3" - semver "7.0.0" + browserslist "^4.21.5" core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: version "2.6.12" @@ -7417,10 +5391,10 @@ core-object@^3.1.5: dependencies: chalk "^2.0.0" -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cors@~2.8.5: version "2.8.5" @@ -7431,9 +5405,9 @@ cors@~2.8.5: vary "^1" cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -7531,17 +5505,17 @@ css-loader@^5.2.0: semver "^7.3.5" css-tree@^2.0.4: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== dependencies: - mdn-data "2.0.28" + mdn-data "2.0.30" source-map-js "^1.0.1" css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== css@^3.0.0: version "3.0.0" @@ -7577,12 +5551,12 @@ cssstyle@^2.3.0: cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== -d3-array@^2.3.0, d3-array@^2.8.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.0.tgz#68a74d153e52d6bf4608d9f6388cca48b42a4c3f" - integrity sha512-T6H/qNldyD/1OlRkJbonb3u3MPhNwju8OPxYv0YSjDb/B2RUeeBEHzIpNrYiinwpmz8+am+puMrpcrDWgY9wRg== +d3-array@2, d3-array@^2.3.0, d3-array@^2.8.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== dependencies: internmap "^1.0.0" @@ -7617,14 +5591,14 @@ d3-scale-chromatic@^2.0.0: d3-interpolate "1 - 2" d3-scale@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd" - integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g== + version "3.3.0" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0.tgz#28c600b29f47e5b9cd2df9749c206727966203f3" + integrity sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ== dependencies: d3-array "^2.3.0" d3-format "1 - 2" d3-interpolate "1.2.0 - 2" - d3-time "1 - 2" + d3-time "^2.1.1" d3-time-format "2 - 3" d3-selection@^2.0.0: @@ -7646,22 +5620,17 @@ d3-shape@^2.0.0: dependencies: d3-time "1 - 2" -"d3-time@1 - 2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab" - integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== +"d3-time@1 - 2", d3-time@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682" + integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ== + dependencies: + d3-array "2" dag-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dag-map/-/dag-map-2.0.2.tgz#9714b472de82a1843de2fba9b6876938cab44c68" - integrity sha1-lxS0ct6CoYQ94vuptodpOMq0TGg= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" + integrity sha512-xnsprIzYuDeiyu5zSKwilV/ajRHxnoMlAhEREfyfTgTSViMVY2fGP1ZcHJbtwup26oCkofySU/m6oKJ3HrkW7w== data-urls@^2.0.0: version "2.0.0" @@ -7673,9 +5642,9 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" dayjs@^1.9.3: - version "1.10.4" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" - integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" @@ -7684,6 +5653,13 @@ debug@2.6.9, debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3. dependencies: ms "2.0.0" +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^3.0.1, debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -7691,96 +5667,85 @@ debug@^3.0.1, debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== decimal.js@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-equal@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9" - integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw== +deep-equal@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== dependencies: - call-bind "^1.0.0" - es-get-iterator "^1.1.1" - get-intrinsic "^1.0.1" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.1.1" + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" isarray "^2.0.5" - object-is "^1.1.4" + object-is "^1.1.5" object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.3" - which-boxed-primitive "^1.0.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" which-collection "^1.0.1" - which-typed-array "^1.1.2" + which-typed-array "^1.1.9" deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + version "4.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" @@ -7792,15 +5757,15 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= +defined@^1.0.0, defined@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegate@^3.1.2: version "3.2.0" @@ -7810,18 +5775,18 @@ delegate@^3.1.2: delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@~2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -7830,27 +5795,27 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== dependencies: repeating "^2.0.0" detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-newline@3.1.0: version "3.1.0" @@ -7867,9 +5832,9 @@ detective@^5.2.1: minimist "^1.2.6" dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" wrappy "1" @@ -7916,16 +5881,16 @@ dlv@^1.1.3: integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== doctoc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/doctoc/-/doctoc-2.0.0.tgz#3c5c51ba89acb9b8e1924cc429500d6de2dfb90e" - integrity sha512-thvCndtwVPe3GCDUG09NYPu9D72Ons3MFh/Fe5A3bePMHGa1XSMgJWyL04bkxa0DyyaylEB2UrqigbQM0fcj7w== + version "2.2.1" + resolved "https://registry.yarnpkg.com/doctoc/-/doctoc-2.2.1.tgz#83f6a6bf4df97defbe027c9a82d13091a138ffe2" + integrity sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ== dependencies: - "@textlint/markdown-to-ast" "~6.1.7" - anchor-markdown-header "~0.5.7" - htmlparser2 "~4.1.0" - minimist "~1.2.5" - underscore "~1.10.2" - update-section "~0.3.3" + "@textlint/markdown-to-ast" "^12.1.1" + anchor-markdown-header "^0.6.0" + htmlparser2 "^7.2.0" + minimist "^1.2.6" + underscore "^1.13.2" + update-section "^0.3.3" doctrine@^3.0.0: version "3.0.0" @@ -7935,12 +5900,12 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-serializer@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" - integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" - domhandler "^4.0.0" + domhandler "^4.2.0" entities "^2.0.0" domain-browser@^1.1.1: @@ -7948,10 +5913,10 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1, domelementtype@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^2.0.1: version "2.0.1" @@ -7960,28 +5925,21 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== - dependencies: - domelementtype "^2.0.1" - -domhandler@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" - integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== +domhandler@^4.2.0, domhandler@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: - domelementtype "^2.1.0" + domelementtype "^2.2.0" -domutils@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.5.0.tgz#42f49cffdabb92ad243278b331fd761c1c2d3039" - integrity sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg== +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" - domelementtype "^2.0.1" - domhandler "^4.0.0" + domelementtype "^2.2.0" + domhandler "^4.2.0" dot-case@^3.0.4: version "3.0.4" @@ -8015,14 +5973,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - editions@^1.1.1: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" @@ -8039,22 +5989,12 @@ editions@^2.2.0: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.649: - version "1.3.692" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.692.tgz#4d00479055a7282cdd1b19caec09ed7779529640" - integrity sha512-Ix+zDUAXWZuUzqKdhkgN5dP7ZM+IwMG4yAGFGDLpGJP/3vNEEwuHG1LIhtXUfW0FFV0j38t5PUv2n/3MFSRviQ== + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.202: - version "1.4.233" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.233.tgz#aa142e45468bda111b88abc9cc59d573b75d6a60" - integrity sha512-ejwIKXTg1wqbmkcRJh9Ur3hFGHFDZDw1POzdsVrB2WZjgRuRMHIQQKNpe64N/qh3ZtH2otEoRoS+s6arAAuAAw== - -electron-to-chromium@^1.4.71: - version "1.4.75" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd" - integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.284: + version "1.4.328" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz#b4565ffa502542b561cea16086d6d9b916c7095a" + integrity sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw== elliptic@^6.5.3: version "6.5.4" @@ -8070,9 +6010,9 @@ elliptic@^6.5.3: minimalistic-crypto-utils "^1.0.1" ember-array-fns@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ember-array-fns/-/ember-array-fns-1.4.0.tgz#92188edecb91c0b69c78e411f1b3339dfe0006a5" - integrity sha512-dKQ2wvuh+rVYhGsbR8pk8j9TX/Kqwf3sRehtJ+HqEi3VavH/WPPvsY2sH5nczYEtQwgkV1NAzgSzLr1iYj4uXQ== + version "1.4.2" + resolved "https://registry.yarnpkg.com/ember-array-fns/-/ember-array-fns-1.4.2.tgz#7087cbedcde195dcae25576832920499171b1749" + integrity sha512-ceUebR8CeU/dOSLwyXIAfLsxvve8FTD9O8m8XQqdCpY1mUh43dAz5INaF/PGPA+Rkbxrq67Cidvr5AewjwQlPg== dependencies: ember-cli-babel "^7.7.3" @@ -8084,7 +6024,7 @@ ember-assign-helper@^0.3.0: ember-cli-babel "^7.19.0" ember-cli-htmlbars "^4.3.1" -ember-auto-import@^1.10.1, ember-auto-import@^1.11.3: +ember-auto-import@^1.10.1, ember-auto-import@^1.11.2, ember-auto-import@^1.11.3, ember-auto-import@^1.5.3: version "1.12.2" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.12.2.tgz#cc7298ee5c0654b0249267de68fb27a2861c3579" integrity sha512-gLqML2k77AuUiXxWNon1FSzuG1DV7PEPpCLCU5aJvf6fdL6rmFfElsZRh+8ELEB/qP9dT+LHjNEunVzd2dYc8A== @@ -8119,51 +6059,17 @@ ember-auto-import@^1.10.1, ember-auto-import@^1.11.3: walk-sync "^0.3.3" webpack "^4.43.0" -ember-auto-import@^1.5.3, ember-auto-import@^1.6.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.10.1.tgz#6c93a875e494aa0a58b759867d3f20adfd514ae3" - integrity sha512-7bOWzPELlVwdWDOkB+phDIjg8BNW+/2RiLLQ+Xa/eIvCLT4ABYhHV5wqW5gs5BnXTDVLfE4ddKZdllnGuPGGDQ== - dependencies: - "@babel/core" "^7.1.6" - "@babel/preset-env" "^7.10.2" - "@babel/traverse" "^7.1.6" - "@babel/types" "^7.1.6" - "@embroider/core" "^0.33.0" - babel-core "^6.26.3" - babel-loader "^8.0.6" - babel-plugin-syntax-dynamic-import "^6.18.0" - babylon "^6.18.0" - broccoli-debug "^0.6.4" - broccoli-node-api "^1.7.0" - broccoli-plugin "^4.0.0" - debug "^3.1.0" - ember-cli-babel "^7.0.0" - enhanced-resolve "^4.0.0" - fs-extra "^6.0.1" - fs-tree-diff "^2.0.0" - handlebars "^4.3.1" - js-string-escape "^1.0.1" - lodash "^4.17.19" - mkdirp "^0.5.1" - resolve-package-path "^3.1.0" - rimraf "^2.6.2" - semver "^7.3.4" - symlink-or-copy "^1.2.0" - typescript-memoize "^1.0.0-alpha.3" - walk-sync "^0.3.3" - webpack "^4.43.0" - -ember-auto-import@^2.2.3, ember-auto-import@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.4.2.tgz#d4d3bc6885a11cf124f606f5c37169bdf76e37ae" - integrity sha512-REh+1aJWpTkvN42a/ga41OuRpUsSW7UQfPr2wPtYx56o/xoSNhVBXejy7yV9ObrkN7gogz6fs2xZwih5cOwpYg== +ember-auto-import@^2.2.3, ember-auto-import@^2.4.2, ember-auto-import@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.6.1.tgz#bd8d434143bd411b99f4a8f32d8b58414d7da4f3" + integrity sha512-3bCRi/pXp4QslmuCXGlSz9xwR7DF5oDx3zZO5OXKzNZihtkqAM1xvGuRIdQSl46pvbAXOkp8Odl5fOen1i0dRw== dependencies: "@babel/core" "^7.16.7" "@babel/plugin-proposal-class-properties" "^7.16.7" "@babel/plugin-proposal-decorators" "^7.16.7" "@babel/preset-env" "^7.16.7" "@embroider/macros" "^1.0.0" - "@embroider/shared-internals" "^1.0.0" + "@embroider/shared-internals" "^2.0.0" babel-loader "^8.0.6" babel-plugin-ember-modules-api-polyfill "^3.5.0" babel-plugin-htmlbars-inline-precompile "^5.2.1" @@ -8189,7 +6095,7 @@ ember-auto-import@^2.2.3, ember-auto-import@^2.4.2: typescript-memoize "^1.0.0-alpha.3" walk-sync "^3.0.0" -ember-basic-dropdown@3.0.21, ember-basic-dropdown@^3.0.16: +ember-basic-dropdown@3.0.21, ember-basic-dropdown@^3.0.21: version "3.0.21" resolved "https://registry.yarnpkg.com/ember-basic-dropdown/-/ember-basic-dropdown-3.0.21.tgz#5711d071966919c9578d2d5ac2c6dcadbb5ea0e0" integrity sha512-Wu9hJWyqorKo+ZT2PMSIO1BxAeAdaiIC2IjSic0+HcKjmMU47botvG0xbxlprimOWaS9vM+nHat6Pt3xPvcB0A== @@ -8272,7 +6178,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879" integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw== -ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.0: +ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: version "6.18.0" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz#3f6435fd275172edeff2b634ee7b29ce74318957" integrity sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA== @@ -8291,7 +6197,7 @@ ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.6.0, e ember-cli-version-checker "^2.1.2" semver "^5.5.0" -ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.1, ember-cli-babel@^7.26.10, ember-cli-babel@^7.26.11, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.4.0, ember-cli-babel@^7.7.3: +ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.17.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.26.0, ember-cli-babel@^7.26.1, ember-cli-babel@^7.26.10, ember-cli-babel@^7.26.11, ember-cli-babel@^7.26.3, ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.5, ember-cli-babel@^7.26.6, ember-cli-babel@^7.7.3: version "7.26.11" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.11.tgz#50da0fe4dcd99aada499843940fec75076249a9f" integrity sha512-JJYeYjiz/JTn34q7F5DSOjkkZqy8qwFOOxXfE6pe9yEJqWGu4qErKxlz8I22JoVEQ/aBUO+OcKTpmctvykM9YA== @@ -8328,9 +6234,9 @@ ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-c semver "^5.5.0" ember-cli-code-coverage@^1.0.0-beta.4: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ember-cli-code-coverage/-/ember-cli-code-coverage-1.0.2.tgz#615fc7af8bc7d9388a28371c2825c224a936d73f" - integrity sha512-uD0RA6A4p/AOpPGq8JXIiZeDFWjzEm5fyWZLU5W8nCF//t3wbkly8tZukiYchJNNYEeESzd6gqdwgDkLMRzZYA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/ember-cli-code-coverage/-/ember-cli-code-coverage-1.0.3.tgz#9a6e5e6350d70761eba749d68ebe2e0d9aa3492f" + integrity sha512-tyWeQ22vxpDmfhIrRCMqZPq9Coppefg19hBgME4yb9Na2qslxCNK0USThigZhesb7hfw2ZgdrKJCrmCVNwkq7g== dependencies: babel-plugin-istanbul "^6.0.0" body-parser "^1.19.0" @@ -8343,9 +6249,9 @@ ember-cli-code-coverage@^1.0.0-beta.4: walk-sync "^2.1.0" ember-cli-dependency-checker@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-3.2.0.tgz#9202ad9e14d6fda33cffc22a11c343c2a8885330" - integrity sha512-dkSmcJ/jY/2ms/S6ph2jXSfOW5VfOpLfg5DFEbra0SaMNgYkNDFF1o0U4OdTsG37L5h/AXWNuVtnOa4TMabz9Q== + version "3.3.1" + resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-3.3.1.tgz#16b44d7a1a1e946f59859fad97f32e616d78323a" + integrity sha512-Tg6OeijjXNKWkDm6057Tr0N9j9Vlz/ITewXWpn1A/+Wbt3EowBx5ZKfvoupqz05EznKgL1B/ecG0t+JN7Qm6MA== dependencies: chalk "^2.3.0" find-yarn-workspace-root "^1.1.0" @@ -8364,18 +6270,18 @@ ember-cli-deprecation-workflow@^2.1.0: ember-cli-htmlbars "^5.3.2" ember-cli-flash@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ember-cli-flash/-/ember-cli-flash-2.1.1.tgz#a1547676d20a8d6f5d0f523228d3e7c8a76486ee" - integrity sha512-JLqrc2gOwCFI8dB1hUV537Iv+yzplsgfVG3u4JSp8QAsQHPCGAT0XZR1yQDlXfoLwFGr1Akw8y72/TwN9jBW9w== + version "2.2.2" + resolved "https://registry.yarnpkg.com/ember-cli-flash/-/ember-cli-flash-2.2.2.tgz#19b47f7704cac91a21a790be220eb021ac37c80d" + integrity sha512-cHjChy9jYtXiprHwAZCVh8FbsfxBvvqKmz+XlAX6kqf/9uBdrxHzGR0jE0PR8aabX9tWAmjdR0hpT2IbbAwwAg== dependencies: - ember-cli-babel "^7.18.0" - ember-cli-htmlbars "^4.2.3" - ember-runtime-enumerable-includes-polyfill "^2.1.0" + "@ember/render-modifiers" "^1.0.2" + ember-cli-babel "^7.26.6" + ember-cli-htmlbars "^5.7.1" ember-cli-get-component-path-option@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771" - integrity sha1-DXtZVVni+QUKvtgE8djv8bCLx3E= + integrity sha512-k47TDwcJ2zPideBCZE8sCiShSxQSpebY2BHcX2DdipMmBox5gsfyVrbKJWIHeSTTKyEUgmBIvQkqTOozEziCZA== ember-cli-htmlbars@^3.0.1: version "3.1.0" @@ -8387,7 +6293,7 @@ ember-cli-htmlbars@^3.0.1: json-stable-stringify "^1.0.1" strip-bom "^3.0.0" -ember-cli-htmlbars@^4.2.3, ember-cli-htmlbars@^4.3.1: +ember-cli-htmlbars@^4.3.1: version "4.5.0" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-4.5.0.tgz#d299e4f7eba6f30dc723ee086906cc550beb252e" integrity sha512-bYJpK1pqFu9AadDAGTw05g2LMNzY8xTCIqQm7dMJmKEoUpLRFbPf4SfHXrktzDh7Q5iggl6Skzf1M0bPlIxARw== @@ -8407,29 +6313,7 @@ ember-cli-htmlbars@^4.2.3, ember-cli-htmlbars@^4.3.1: strip-bom "^4.0.0" walk-sync "^2.0.2" -ember-cli-htmlbars@^5.0.0, ember-cli-htmlbars@^5.1.0, ember-cli-htmlbars@^5.1.2, ember-cli-htmlbars@^5.2.0, ember-cli-htmlbars@^5.3.1, ember-cli-htmlbars@^5.6.3: - version "5.7.1" - resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.1.tgz#eb5b88c7d9083bc27665fb5447a9b7503b32ce4f" - integrity sha512-9laCgL4tSy48orNoQgQKEHp93MaqAs9ZOl7or5q+8iyGGJHW6sVXIYrVv5/5O9HfV6Ts8/pW1rSoaeKyLUE+oA== - dependencies: - "@ember/edition-utils" "^1.2.0" - babel-plugin-htmlbars-inline-precompile "^5.0.0" - broccoli-debug "^0.6.5" - broccoli-persistent-filter "^3.1.2" - broccoli-plugin "^4.0.3" - common-tags "^1.8.0" - ember-cli-babel-plugin-helpers "^1.1.1" - ember-cli-version-checker "^5.1.2" - fs-tree-diff "^2.0.1" - hash-for-dep "^1.5.1" - heimdalljs-logger "^0.1.10" - json-stable-stringify "^1.0.1" - semver "^7.3.4" - silent-error "^1.1.1" - strip-bom "^4.0.0" - walk-sync "^2.2.0" - -ember-cli-htmlbars@^5.3.2, ember-cli-htmlbars@^5.7.1, ember-cli-htmlbars@^5.7.2: +ember-cli-htmlbars@^5.0.0, ember-cli-htmlbars@^5.1.0, ember-cli-htmlbars@^5.1.2, ember-cli-htmlbars@^5.3.1, ember-cli-htmlbars@^5.3.2, ember-cli-htmlbars@^5.7.1, ember-cli-htmlbars@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.2.tgz#e0cd2fb3c20d85fe4c3e228e6f0590ee1c645ba8" integrity sha512-Uj6R+3TtBV5RZoJY14oZn/sNPnc+UgmC8nb5rI4P3fR/gYoyTFIZSXiIM7zl++IpMoIrocxOrgt+mhonKphgGg== @@ -8451,48 +6335,7 @@ ember-cli-htmlbars@^5.3.2, ember-cli-htmlbars@^5.7.1, ember-cli-htmlbars@^5.7.2: strip-bom "^4.0.0" walk-sync "^2.2.0" -ember-cli-htmlbars@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.0.0.tgz#9d0b67c0f107467b6c8ecdc47d64e877489841bf" - integrity sha512-7h9Lb1kfvLecMUOX8wCbwjzCsgXdNDs8qpOsDuKV6YaGS9jDZHu4P5xTYLX78YepEUnwOw1atCYWzBUsJHWrzA== - dependencies: - "@ember/edition-utils" "^1.2.0" - babel-plugin-ember-template-compilation "^1.0.0" - babel-plugin-htmlbars-inline-precompile "^5.3.0" - broccoli-debug "^0.6.5" - broccoli-persistent-filter "^3.1.2" - broccoli-plugin "^4.0.3" - ember-cli-version-checker "^5.1.2" - fs-tree-diff "^2.0.1" - hash-for-dep "^1.5.1" - heimdalljs-logger "^0.1.10" - json-stable-stringify "^1.0.1" - semver "^7.3.4" - silent-error "^1.1.1" - strip-bom "^4.0.0" - walk-sync "^2.2.0" - -ember-cli-htmlbars@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.1.0.tgz#97150c2a6f9a981475599d74817df66f5d816c2b" - integrity sha512-kT+MA2JsNLk10HpxAjpB5HHtR0WCoxZEUwLsy/BBww5lXmsrf34QzmTw7SL6DabZVxs+YCb9RhU9KTmFygGxCg== - dependencies: - "@ember/edition-utils" "^1.2.0" - babel-plugin-ember-template-compilation "^1.0.0" - babel-plugin-htmlbars-inline-precompile "^5.3.0" - broccoli-debug "^0.6.5" - broccoli-persistent-filter "^3.1.2" - broccoli-plugin "^4.0.3" - ember-cli-version-checker "^5.1.2" - fs-tree-diff "^2.0.1" - hash-for-dep "^1.5.1" - heimdalljs-logger "^0.1.10" - js-string-escape "^1.0.1" - semver "^7.3.4" - silent-error "^1.1.1" - walk-sync "^2.2.0" - -ember-cli-htmlbars@^6.1.0: +ember-cli-htmlbars@^6.0.0, ember-cli-htmlbars@^6.0.1, ember-cli-htmlbars@^6.1.0, ember-cli-htmlbars@^6.1.1, ember-cli-htmlbars@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.2.0.tgz#18ec48ee1c93f9eed862a64eb24a9d14604f1dfc" integrity sha512-j5EGixjGau23HrqRiW/JjoAovg5UBHfjbyN7wX5ekE90knIEqUUj1z/Mo/cTx/J2VepQ2lE6HdXW9LWQ/WdMtw== @@ -8512,10 +6355,10 @@ ember-cli-htmlbars@^6.1.0: silent-error "^1.1.1" walk-sync "^2.2.0" -ember-cli-inject-live-reload@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.0.2.tgz#95edb543b386239d35959e5ea9579f5382976ac7" - integrity sha512-HDD6o/kBHT/kUtazklU0OW23q2jigIN42QmcpFdXUSvJ2/2SYA6yIqSUxWfJgISmtn5gTNZ2KPq1p3dLkhJxSQ== +ember-cli-inject-live-reload@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.1.0.tgz#ef63c733c133024d5726405a3c247fa12e88a385" + integrity sha512-YV5wYRD5PJHmxaxaJt18u6LE6Y+wo455BnmcpN+hGNlChy2piM9/GMvYgTAz/8Vin8RJ5KekqP/w/NEaRndc/A== dependencies: clean-base-url "^1.0.0" ember-cli-version-checker "^3.1.3" @@ -8523,17 +6366,17 @@ ember-cli-inject-live-reload@^2.0.2: ember-cli-is-package-missing@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-is-package-missing/-/ember-cli-is-package-missing-1.0.0.tgz#6e6184cafb92635dd93ca6c946b104292d4e3390" - integrity sha1-bmGEyvuSY13ZPKbJRrEEKS1OM5A= + integrity sha512-9hEoZj6Au5onlSDdcoBqYEPT8ehlYntZPxH8pBKV0GO7LNel88otSAQsCfXvbi2eKE+MaSeLG/gNaCI5UdWm9g== ember-cli-lodash-subset@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ember-cli-lodash-subset/-/ember-cli-lodash-subset-2.0.1.tgz#20cb68a790fe0fde2488ddfd8efbb7df6fe766f2" - integrity sha1-IMtop5D+D94kiN39jvu332/nZvI= + integrity sha512-QkLGcYv1WRK35g4MWu/uIeJ5Suk2eJXKtZ+8s+qE7C9INmpCPyPxzaqZABquYzcWNzIdw6kYwz3NWAFdKYFxwg== ember-cli-node-assets@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/ember-cli-node-assets/-/ember-cli-node-assets-0.2.2.tgz#d2d55626e7cc6619f882d7fe55751f9266022708" - integrity sha1-0tVWJufMZhn4gtf+VXUfkmYCJwg= + integrity sha512-pFyjlhzwx2FxAmkxSVJvP+i+MwHDhmgsmma1ZQbFLYwBeufo1GIzqSJUfStcpOE1NDg8fXm2yZVVzdZYf9lW2w== dependencies: broccoli-funnel "^1.0.1" broccoli-merge-trees "^1.1.1" @@ -8545,14 +6388,14 @@ ember-cli-node-assets@^0.2.2: ember-cli-normalize-entity-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-normalize-entity-name/-/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7" - integrity sha1-CxT3vLxZmqEXtf3cgeT9A8S61bc= + integrity sha512-rF4P1rW2P1gVX1ynZYPmuIf7TnAFDiJmIUFI1Xz16VYykUAyiOCme0Y22LeZq8rTzwBMiwBwoE3RO4GYWehXZA== dependencies: silent-error "^1.0.0" ember-cli-page-object@^1.17.11: - version "1.17.11" - resolved "https://registry.yarnpkg.com/ember-cli-page-object/-/ember-cli-page-object-1.17.11.tgz#e5972484525d0f0da9b4b715843c830b49b9c662" - integrity sha512-k1VagZdUHHkPGW5l+vZnKNVW1dPRpWm4Hqy75o1dF3oVHF+NFUmEI/ZDV3m2dS0YindReGfbojeox9vGgKYlcQ== + version "1.17.12" + resolved "https://registry.yarnpkg.com/ember-cli-page-object/-/ember-cli-page-object-1.17.12.tgz#bb5e3b01e81798cbea064d218bbff8cd52e4229b" + integrity sha512-G5HCIp8Fp2ywrlBoaxdKNsAsJClnLyG+6Xg7liygnJxYpjc2e9BNcCXShxVsfkG3thlEFhNRWm5TY2TXNguOVA== dependencies: broccoli-file-creator "^2.1.1" broccoli-merge-trees "^2.0.0" @@ -8566,12 +6409,12 @@ ember-cli-page-object@^1.17.11: ember-cli-path-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-path-utils/-/ember-cli-path-utils-1.0.0.tgz#4e39af8b55301cddc5017739b77a804fba2071ed" - integrity sha1-Tjmvi1UwHN3FAXc5t3qAT7ogce0= + integrity sha512-Qq0vvquzf4cFHoDZavzkOy3Izc893r/5spspWgyzLCPTaG78fM3HsrjZm7UWEltbXUqwHHYrqZd/R0jS08NqSA== ember-cli-postcss@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/ember-cli-postcss/-/ember-cli-postcss-8.1.0.tgz#a7bbcb7799f3fb9c908247de30c0bee312e0399b" - integrity sha512-GkvMgM/GMoSi5H1xl+cp/nudQJ1uT49cgvFOx1anjhFiWDvym5Okq83JOhfbUcUAOurHjMLWugDmpAaxDM8KyA== + version "8.2.0" + resolved "https://registry.yarnpkg.com/ember-cli-postcss/-/ember-cli-postcss-8.2.0.tgz#9cc1fee624d2d13c41633cf32d4e8cb8d5f88eff" + integrity sha512-S2HQqmNtcezmLSt/OPZKCXg+aRV7yFoZp+tn1HCLSbR/eU95xl7MWxTjbj/wOIGMfhggy/hBT2+STDh8mGuVpw== dependencies: broccoli-merge-trees "^4.2.0" broccoli-postcss "^6.0.1" @@ -8602,7 +6445,7 @@ ember-cli-sass@^10.0.1: ember-cli-sri@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ember-cli-sri/-/ember-cli-sri-2.1.1.tgz#971620934a4b9183cf7923cc03e178b83aa907fd" - integrity sha1-lxYgk0pLkYPPeSPMA+F4uDqpB/0= + integrity sha512-YG/lojDxkur9Bnskt7xB6gUOtJ6aPl/+JyGYm9HNDk3GECVHB3SMN3rlGhDKHa1ndS5NK2W2TSLb9bzRbGlMdg== dependencies: broccoli-sri-hash "^2.1.0" @@ -8619,7 +6462,7 @@ ember-cli-string-helpers@^6.1.0: ember-cli-string-utils@^1.0.0, ember-cli-string-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1" - integrity sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE= + integrity sha512-PlJt4fUDyBrC/0X+4cOpaGCiMawaaB//qD85AXmDRikxhxVzfVdpuoec02HSiTGTTB85qCIzWBIh8lDOiMyyFg== ember-cli-template-lint@^2.0.1: version "2.0.2" @@ -8648,7 +6491,7 @@ ember-cli-terser@^4.0.2: ember-cli-test-info@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-test-info/-/ember-cli-test-info-1.0.0.tgz#ed4e960f249e97523cf891e4aed2072ce84577b4" - integrity sha1-7U6WDySel1I8+JHkrtIHLOhFd7Q= + integrity sha512-dEVTIpmUfCzweC97NGf6p7L6XKBwV2GmSM4elmzKvkttEp5P7AvGA9uGyN4GqFq+RwhW+2b0I2qlX00w+skm+A== dependencies: ember-cli-string-utils "^1.0.0" @@ -8714,26 +6557,10 @@ ember-cli-typescript@^3.1.3, ember-cli-typescript@^3.1.4: stagehand "^1.0.0" walk-sync "^2.0.0" -ember-cli-typescript@^4.0.0, ember-cli-typescript@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-4.1.0.tgz#2ff17be2e6d26b58c88b1764cb73887e7176618b" - integrity sha512-zSuKG8IQuYE3vS+c7V0mHJqwrN/4Wo9Wr50+0NUjnZH3P99ChynczQHu/P7WSifkO6pF6jaxwzf09XzWvG8sVw== - dependencies: - ansi-to-html "^0.6.6" - broccoli-stew "^3.0.0" - debug "^4.0.0" - execa "^4.0.0" - fs-extra "^9.0.1" - resolve "^1.5.0" - rsvp "^4.8.1" - semver "^7.3.2" - stagehand "^1.0.0" - walk-sync "^2.2.0" - -ember-cli-typescript@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-5.1.0.tgz#460eb848564e29d64f2b36b2a75bbe98172b72a4" - integrity sha512-wEZfJPkjqFEZAxOYkiXsDrJ1HY75e/6FoGhQFg8oNFJeGYpIS/3W0tgyl1aRkSEEN1NRlWocDubJ4aZikT+RTA== +ember-cli-typescript@^4.0.0, ember-cli-typescript@^4.1.0, ember-cli-typescript@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-4.2.1.tgz#54d08fc90318cc986f3ea562f93ce58a6cc4c24d" + integrity sha512-0iKTZ+/wH6UB/VTWKvGuXlmwiE8HSIGcxHamwNhEC5x1mN3z8RfvsFZdQWYUzIWFN2Tek0gmepGRPTwWdBYl/A== dependencies: ansi-to-html "^0.6.15" broccoli-stew "^3.0.0" @@ -8746,10 +6573,10 @@ ember-cli-typescript@^5.0.0: stagehand "^1.0.0" walk-sync "^2.2.0" -ember-cli-typescript@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-5.1.1.tgz#cf561026f3e7bd05312c1c212acffa1c30d5fa0c" - integrity sha512-DbzATYWY8nbXwSxXqtK8YlqGJTcyFyL+eg6IGCc2ur0AMnq/H+o6Z9np9eGoq1sI+HwX7vBkOVoD3k0WurAwXg== +ember-cli-typescript@^5.0.0, ember-cli-typescript@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-5.2.1.tgz#553030f1ce3e8958b8e4fc34909acd1218cb35f2" + integrity sha512-qqp5TAIuPHxHiGXJKL+78Euyhy0zSKQMovPh8sJpN/ZBYx0H90pONufHR3anaMcp1snVfx4B+mb9+7ijOik8ZA== dependencies: ansi-to-html "^0.6.15" broccoli-stew "^3.0.0" @@ -8809,10 +6636,10 @@ ember-cli-yadda@^0.7.0: qunit "^2.16.0" yadda "*" -ember-cli@~3.27.0: - version "3.27.0" - resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.27.0.tgz#8ccf9db51d7b462f86210b853d086a4543605c34" - integrity sha512-vFLPFkplXn5v005fattHdOcs5AbSp7RG4w1wpHDWHzOSYpl2Dr+5zzZtqLS7V5IVaLf3XK4l24XwhSW9HpMfsQ== +ember-cli@3.28.6: + version "3.28.6" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.28.6.tgz#477a6a134501639d6cb03da6746158501c41efce" + integrity sha512-aGHIDXM5KujhU+tHyfp1X5bUp3yj47sIWI0zgybyIw6vv6ErAu/eKWWMSib5PF8cQDdXG9vttBcXnvQ4QBNIPQ== dependencies: "@babel/core" "^7.13.8" "@babel/plugin-transform-modules-amd" "^7.12.1" @@ -8828,7 +6655,7 @@ ember-cli@~3.27.0: broccoli-config-loader "^1.0.1" broccoli-config-replace "^1.1.2" broccoli-debug "^0.6.5" - broccoli-funnel "^2.0.2" + broccoli-funnel "^3.0.5" broccoli-funnel-reducer "^1.0.0" broccoli-merge-trees "^3.0.2" broccoli-middleware "^2.1.1" @@ -8894,7 +6721,7 @@ ember-cli@~3.27.0: sane "^4.1.0" semver "^7.3.4" silent-error "^1.1.1" - sort-package-json "^1.48.0" + sort-package-json "^1.49.0" symlink-or-copy "^1.3.1" temp "0.9.4" testem "^3.2.0" @@ -8903,7 +6730,7 @@ ember-cli@~3.27.0: uuid "^8.3.2" walk-sync "^2.2.0" watch-detector "^1.0.0" - workerpool "^6.0.3" + workerpool "^6.1.4" yam "^1.0.0" ember-collection@^1.0.0: @@ -8915,26 +6742,18 @@ ember-collection@^1.0.0: ember-cli-htmlbars "^3.0.1" layout-bin-packer "^1.4.0" -ember-compatibility-helpers@^1.1.1, ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.2.tgz#839e0c24190b7a2ec8c39b80e030811b1a95b6d3" - integrity sha512-EKyCGOGBvKkBsk6wKfg3GhjTvTTkcEwzl/cv4VYvZM18cihmjGNpliR4BymWsKRWrv4VJLyq15Vhk3NHkSNBag== - dependencies: - babel-plugin-debug-macros "^0.2.0" - ember-cli-version-checker "^5.1.1" - semver "^5.4.1" - -ember-compatibility-helpers@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.5.tgz#b8363b1d5b8725afa9a4fe2b2986ac28626c6f23" - integrity sha512-7cddkQQp8Rs2Mqrj0xqZ0uO7eC9tBCKyZNcP2iE1RxQqOGPv8fiPkj1TUeidUB/Qe80lstoVXWMEuqqhW7Yy9A== +ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1, ember-compatibility-helpers@^1.2.4, ember-compatibility-helpers@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.6.tgz#603579ab2fb14be567ef944da3fc2d355f779cd8" + integrity sha512-2UBUa5SAuPg8/kRVaiOfTwlXdeVweal1zdNPibwItrhR0IvPrXpaqwJDlEZnWKEoB+h33V0JIfiWleSG6hGkkA== dependencies: babel-plugin-debug-macros "^0.2.0" ember-cli-version-checker "^5.1.1" + find-up "^5.0.0" fs-extra "^9.1.0" semver "^5.4.1" -ember-composable-helpers@^4.4.1: +ember-composable-helpers@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-4.5.0.tgz#94febbdf4348e64f45f7a6f993f326e32540a61e" integrity sha512-XjpDLyVPsLCy6kd5dIxZonOECCO6AA5sY5Hr6tYUbJg3s5ghFAiFWaNcYraYC+fL2yPJQAswwpfwGlQORUJZkw== @@ -8965,13 +6784,16 @@ ember-concurrency-decorators@^2.0.0: ember-cli-typescript "^3.1.4" "ember-concurrency@>=1.0.0 <3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-2.0.3.tgz#d8ac917fdf013a277bfc7b26e417937ee0638455" - integrity sha512-+fOOFt32odnunDL3Du0LqMgnRzDDNKnzo1ry9ppICpvLXekJzYFwU1RniVivfJ+9nbpHMJZQUlZJAm1ZAnTExw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-2.3.7.tgz#52d786e37704b9054da1952638797e23714ec0e1" + integrity sha512-sz6sTIXN/CuLb5wdpauFa+rWXuvXXSnSHS4kuNzU5GSMDX1pLBWSuovoUk61FUe6CYRqBmT1/UushObwBGickQ== dependencies: - "@glimmer/tracking" "^1.0.2" - ember-cli-babel "^7.22.1" - ember-cli-htmlbars "^5.6.3" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/types" "^7.12.13" + "@glimmer/tracking" "^1.0.4" + ember-cli-babel "^7.26.11" + ember-cli-babel-plugin-helpers "^1.1.1" + ember-cli-htmlbars "^5.7.1" ember-compatibility-helpers "^1.2.0" ember-destroyable-polyfill "^2.0.2" @@ -8996,21 +6818,20 @@ ember-data-model-fragments@5.0.0-beta.8: git-repo-info "^2.1.1" npm-git-info "^1.0.3" -ember-data@~3.27.1: - version "3.27.1" - resolved "https://registry.yarnpkg.com/ember-data/-/ember-data-3.27.1.tgz#02d6b76c1d5de0f50d24274147b8711f6ca4f28d" - integrity sha512-36P8+7B6Z5ZjyITFbf2Wcub/fdE2DTsLoPPZK7It488fub5s90o85XC0WlwUQPvff39us2N4pzjwmCZ8Jj/gjg== - dependencies: - "@ember-data/adapter" "3.27.1" - "@ember-data/debug" "3.27.1" - "@ember-data/model" "3.27.1" - "@ember-data/private-build-infra" "3.27.1" - "@ember-data/record-data" "3.27.1" - "@ember-data/serializer" "3.27.1" - "@ember-data/store" "3.27.1" +ember-data@~3.28.6: + version "3.28.13" + resolved "https://registry.yarnpkg.com/ember-data/-/ember-data-3.28.13.tgz#68668d84924453c2baeeb0cf7d25f75b2c07e8b9" + integrity sha512-j1YjPl2JNHxQwQW6Bgfis44XSr4WCtdwMXr/SPpLsF1oVeTWIn3kwefcDnbuCI8Spmt1B9ab3ZLKzf2KkGN/7g== + dependencies: + "@ember-data/adapter" "3.28.13" + "@ember-data/debug" "3.28.13" + "@ember-data/model" "3.28.13" + "@ember-data/private-build-infra" "3.28.13" + "@ember-data/record-data" "3.28.13" + "@ember-data/serializer" "3.28.13" + "@ember-data/store" "3.28.13" "@ember/edition-utils" "^1.2.0" - "@ember/ordered-set" "^4.0.0" - "@ember/string" "^1.0.0" + "@ember/string" "^3.0.0" "@glimmer/env" "^0.1.7" broccoli-merge-trees "^4.2.0" ember-cli-babel "^7.26.6" @@ -9100,7 +6921,7 @@ ember-getowner-polyfill@^2.0.0: ember-cli-version-checker "^2.1.0" ember-factory-for-polyfill "^1.3.1" -ember-in-element-polyfill@^1.0.0, ember-in-element-polyfill@^1.0.1: +ember-in-element-polyfill@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ember-in-element-polyfill/-/ember-in-element-polyfill-1.0.1.tgz#143504445bb4301656a2eaad42644d684f5164dd" integrity sha512-eHs+7D7PuQr8a1DPqsJTsEyo3FZ1XuH6WEZaEBPDa9s0xLlwByCNKl8hi1EbXOgvgEZNHHi9Rh0vjxyfakrlgg== @@ -9111,25 +6932,18 @@ ember-in-element-polyfill@^1.0.0, ember-in-element-polyfill@^1.0.1: ember-cli-version-checker "^5.1.2" ember-in-viewport@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.8.1.tgz#fd8305366d425c3912def49210e63fd582a7e60d" - integrity sha512-abzKIa7FiOBz3fLkZ3ZSgxJQf5enGe1IdrLdjfo5HjdyWTq9j+B0lzuZCoOYUuWdoiTiXvT3gDFNqQ5j7ky2kw== + version "3.10.3" + resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.10.3.tgz#317472bb82bed11f7895821b799349c6a7406e81" + integrity sha512-hSX7p+G6hJjZaY2BAqzyuiMP7QIHzQ4g0+ZBnEwAa8GMbILFAtzPx5A4XEX8wY6dSzhHB9n9jkcWZdmaML6q8A== dependencies: - ember-auto-import "^1.6.0" - ember-cli-babel "^7.22.1" + ember-auto-import "^1.11.2" + ember-cli-babel "^7.26.3" ember-modifier "^2.1.0" fast-deep-equal "^2.0.1" - intersection-observer-admin "~0.2.13" + intersection-observer-admin "~0.3.2" raf-pool "~0.1.4" -ember-inflector@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-4.0.1.tgz#e0aa9e39119156a278c80bb8cdec8462ecb8e6ab" - integrity sha512-D14nH2wVMp13ciOONcHMXwdL/IoMBSDXsGObF2rsQX7F8vGjwp+jnSNzZuGjjIvlBFQydOJ+R2n86J2e8HRTQA== - dependencies: - ember-cli-babel "^7.23.0" - -ember-inflector@^4.0.2: +ember-inflector@^4.0.1, ember-inflector@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-4.0.2.tgz#4494f1a5f61c1aca7702d59d54024cc92211d8ec" integrity sha512-+oRstEa52mm0jAFzhr51/xtEWpCEykB3SEBr7vUg8YnXUZJ5hKNBppP938q8Zzr9XfJEbzrtDSGjhKwJCJv6FQ== @@ -9185,18 +6999,18 @@ ember-load-initializers@^2.1.2: ember-cli-typescript "^2.0.2" ember-math-helpers@^2.4.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/ember-math-helpers/-/ember-math-helpers-2.15.0.tgz#3feb3328354589e4508f7035bd6b37d7df275096" - integrity sha512-dxHU0jgErvK+ihl/GEn7FZycgZFZeUgS1P0DlEqSOuzbZ0klikntUgBDfUS1xuF31gRxnDx2V9com28htZJHaA== + version "2.18.2" + resolved "https://registry.yarnpkg.com/ember-math-helpers/-/ember-math-helpers-2.18.2.tgz#5778f0aae08f3502be8defbacd383794f42b177e" + integrity sha512-ikAXlIiT0wk8X8uuMtHkrRYt8HnDt9Wk+iNoY9IoBmt6IRZjCD5BmuxrIPj5Eop2/afMfKmNKnc4L1StkXM3wg== dependencies: - broccoli-funnel "^3.0.1" - ember-cli-babel "^7.20.5" - ember-cli-htmlbars "^5.1.2" + broccoli-funnel "^3.0.8" + ember-cli-babel "^7.26.11" + ember-cli-htmlbars "^6.0.1" ember-maybe-import-regenerator@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator/-/ember-maybe-import-regenerator-0.1.6.tgz#35d41828afa6d6a59bc0da3ce47f34c573d776ca" - integrity sha1-NdQYKK+m1qWbwNo85H80xXPXdso= + integrity sha512-aX9UINiUXIjzsCNNna1ioASB/2lbnFgSHI63bBcd4MOVE9AqoLdOL7h+ocyylYXyYoBj2JDRwCzjWNf2Xbp5wg== dependencies: broccoli-funnel "^1.0.1" broccoli-merge-trees "^1.0.0" @@ -9204,14 +7018,13 @@ ember-maybe-import-regenerator@^0.1.6: regenerator-runtime "^0.9.5" ember-maybe-in-element@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/ember-maybe-in-element/-/ember-maybe-in-element-2.0.3.tgz#640ea56b492bdacd1c41c128c2163d933c18c3ec" - integrity sha512-XKuBYPYELwsEmDnJXI7aNSZtt/SKGgRZNMFhASODLz7j0OHSNrcJtjo5Wam/alxIjUIYVjEnMnOzqBLMfJnQkQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/ember-maybe-in-element/-/ember-maybe-in-element-2.1.0.tgz#f7bd8e41ca90a4f8038d919a9c135cbe7a7f271b" + integrity sha512-6WAzPbf4BNQIQzkur2+zRJJJ/PKQoujIYgFjrpj3fOPy8iRlxVUm0/B41qbFyg1LE6bVbg0cWbuESWEvJ9Rswg== dependencies: - ember-cli-babel "^7.21.0" - ember-cli-htmlbars "^5.2.0" - ember-cli-version-checker "^5.1.1" - ember-in-element-polyfill "^1.0.1" + ember-cli-babel "^7.26.11" + ember-cli-htmlbars "^6.1.1" + ember-cli-version-checker "^5.1.2" ember-modifier-manager-polyfill@^1.1.0, ember-modifier-manager-polyfill@^1.2.0: version "1.2.0" @@ -9223,18 +7036,28 @@ ember-modifier-manager-polyfill@^1.1.0, ember-modifier-manager-polyfill@^1.2.0: ember-compatibility-helpers "^1.2.0" ember-modifier@^2.1.0, ember-modifier@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-2.1.1.tgz#aa3a12e2d6cf1622f774f3f1eab4880982a43fa9" - integrity sha512-g9mcpFWgw5lgNU40YNf0USNWqoGTJ+EqjDQKjm7556gaRNDeGnLylFKqx9O3opwLHEt6ZODnRDy9U0S5YEMREg== + version "2.1.2" + resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-2.1.2.tgz#62d18faedf972dcd9d34f90d5321fbc943d139b1" + integrity sha512-3Lsu1fV1sIGa66HOW07RZc6EHISwKt5VA5AUnFss2HX6OTfpxTJ2qvPctt2Yt0XPQXJ4G6BQasr/F35CX7UGJA== dependencies: ember-cli-babel "^7.22.1" ember-cli-normalize-entity-name "^1.0.0" ember-cli-string-utils "^1.1.0" ember-cli-typescript "^3.1.3" + ember-compatibility-helpers "^1.2.4" ember-destroyable-polyfill "^2.0.2" ember-modifier-manager-polyfill "^1.2.0" -"ember-modifier@^2.1.2 || ^3.1.0 || ^4.0.0", ember-modifier@^3.2.7: +"ember-modifier@^2.1.2 || ^3.1.0 || ^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-4.1.0.tgz#cb91efbf8ca4ff4a1a859767afa42dddba5a2bbd" + integrity sha512-YFCNpEYj6jdyy3EjslRb2ehNiDvaOrXTilR9+ngq+iUqSHYto2zKV0rleiA1XJQ27ELM1q8RihT29U6Lq5EyqQ== + dependencies: + "@embroider/addon-shim" "^1.8.4" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-string-utils "^1.1.0" + +ember-modifier@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-3.2.7.tgz#f2d35b7c867cbfc549e1acd8d8903c5ecd02ea4b" integrity sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA== @@ -9243,17 +7066,9 @@ ember-modifier@^2.1.0, ember-modifier@^2.1.1: ember-cli-normalize-entity-name "^1.0.0" ember-cli-string-utils "^1.1.0" ember-cli-typescript "^5.0.0" - ember-compatibility-helpers "^1.2.5" - -ember-named-blocks-polyfill@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/ember-named-blocks-polyfill/-/ember-named-blocks-polyfill-0.2.4.tgz#f5f30711ee89244927b55aae7fa9630edaadc974" - integrity sha512-PsohC7ejjS7V++6i/JSy0pl1hXLV3IS3Qs+O7SrjIPYcg1UEmUwqgPiDmXqNgy0p2dc5TK5bIJTtX8wofCI63Q== - dependencies: - ember-cli-babel "^7.19.0" - ember-cli-version-checker "^5.1.1" + ember-compatibility-helpers "^1.2.5" -ember-named-blocks-polyfill@^0.2.5: +ember-named-blocks-polyfill@^0.2.3, ember-named-blocks-polyfill@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/ember-named-blocks-polyfill/-/ember-named-blocks-polyfill-0.2.5.tgz#d5841406277026a221f479c815cfbac6cdcaeecb" integrity sha512-OVMxzkfqJrEvmiky7gFzmuTaImCGm7DOudHWTdMBPO7E+dQSunrcRsJMgO9ZZ56suqBIz/yXbEURrmGS+avHxA== @@ -9303,23 +7118,23 @@ ember-power-select-with-create@^0.8.0: ember-power-select "^4.0.0" ember-power-select@^4.0.0, ember-power-select@^4.0.5: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-4.1.3.tgz#660d3bec86ce71db43a4a7368a2827b07e65c8b6" - integrity sha512-/8HdYb8PptMbrB4lxiPkfRQt6ts83lGRB+ZA6Xr4OaCzWk+5evYm/+a0Q5Gy3XnyhRiQgbzXO07G+fAijXGTOQ== + version "4.1.7" + resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-4.1.7.tgz#eb547dd37448357d8f3fa789db18ddbba43fb8ca" + integrity sha512-Q4cjUudWb7JA6q7qe0jhcpLsipuFUHMwkYC05HxST5qm3MRMEzs6KfZ3Xd/TcrjBLSoWniw3Q61Quwcb41w5Jw== dependencies: - "@glimmer/component" "^1.0.2" - "@glimmer/tracking" "^1.0.2" + "@glimmer/component" "^1.0.4" + "@glimmer/tracking" "^1.0.4" ember-assign-helper "^0.3.0" - ember-basic-dropdown "^3.0.16" - ember-cli-babel "^7.23.0" - ember-cli-htmlbars "^5.3.1" - ember-cli-typescript "^4.1.0" + ember-basic-dropdown "^3.0.21" + ember-cli-babel "^7.26.0" + ember-cli-htmlbars "^6.0.0" + ember-cli-typescript "^4.2.0" ember-concurrency ">=1.0.0 <3" ember-concurrency-decorators "^2.0.0" ember-text-measurer "^0.6.0" ember-truth-helpers "^2.1.0 || ^3.0.0" -ember-qunit@^5.1.4: +ember-qunit@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-5.1.5.tgz#24a7850f052be24189ff597dfc31b923e684c444" integrity sha512-2cFA4oMygh43RtVcMaBrr086Tpdhgbn3fVZ2awLkzF/rnSN0D0PSRpd7hAD7OdBPerC/ZYRwzVyGXLoW/Zes4A== @@ -9366,10 +7181,10 @@ ember-resize-observer-service@^0.3.0: ember-cli-babel "^7.20.5" ember-cli-htmlbars "^5.1.2" -ember-resolver@^8.0.2: - version "8.0.3" - resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-8.0.3.tgz#40f243aa58281bf195c695fe84a6b291e204690a" - integrity sha512-fA53fxfG821BRqNiB9mQDuzZpzSRcSAYZTYBlRQOHsJwoYdjyE7idz4YcytbSsa409G5J2kP6B+PiKOBh0odlw== +ember-resolver@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-8.1.0.tgz#8ada162746fde3e6ea6a703bbb9910fbe62ab1e5" + integrity sha512-MGD7X2ztZVswGqs1mLgzhZJRhG7XiF6Mg4DgC7xJFWRYQQUHyGJpGdNWY9nXyrYnRIsCrQoL1do41zpxbrB/cg== dependencies: babel-plugin-debug-macros "^0.3.4" broccoli-funnel "^3.0.8" @@ -9379,9 +7194,9 @@ ember-resolver@^8.0.2: resolve "^1.20.0" ember-rfc176-data@^0.3.13, ember-rfc176-data@^0.3.15, ember-rfc176-data@^0.3.17: - version "0.3.17" - resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.17.tgz#d4fc6c33abd6ef7b3440c107a28e04417b49860a" - integrity sha512-EVzTTKqxv9FZbEh6Ktw56YyWRAA0MijKvl7H8C06wVF+8f/cRRz3dXxa4nkwjzyVwx4rzKGuIGq77hxJAQhWWw== + version "0.3.18" + resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.18.tgz#bb6fdcef49999981317ea81b6cc9210fb4108d65" + integrity sha512-JtuLoYGSjay1W3MQAxt3eINWXNYYQliK90tLwtb8aeCuQK8zKGCRbBodVIrkcTqshULMnRuTOS6t1P7oQk3g6Q== ember-route-action-helper@^2.0.8: version "2.0.8" @@ -9407,21 +7222,12 @@ ember-router-helpers@^0.4.0: dependencies: ember-cli-babel "^7.20.0" -ember-runtime-enumerable-includes-polyfill@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ember-runtime-enumerable-includes-polyfill/-/ember-runtime-enumerable-includes-polyfill-2.1.0.tgz#dc6d4a028471e4acc350dfd2a149874fb20913f5" - integrity sha512-au18iI8VbEDYn3jLFZzETnKN5ciPgCUxMRucEP3jkq7qZ6sE0FVKpWMPY/h9tTND3VOBJt6fgPpEBJoJVCUudg== - dependencies: - ember-cli-babel "^6.9.0" - ember-cli-version-checker "^2.1.0" - ember-set-helper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ember-set-helper/-/ember-set-helper-2.0.0.tgz#afdb6cf2f5750f6f69e38a387f19615560f30a0f" - integrity sha512-cnKbQEkPi+plRI9eWj76zt4pjRKM/PsKIlYP2ZcSI7R83c1Zig5DLDUft+1PJI/1/fnPGLB8s3E6hjFBQo+T9g== + version "2.0.1" + resolved "https://registry.yarnpkg.com/ember-set-helper/-/ember-set-helper-2.0.1.tgz#e39417531e25089b45ccb905b8c00eda7b3fbbde" + integrity sha512-6IIimVGOdehZcncH1ilCY4p7hWBtZqWYMc1Xodr1ATOCuIk6ZO1yztKcUQhlmwl7fE82gL4wHD01T6XP5W59Ng== dependencies: ember-cli-babel "^7.18.0" - ember-cli-htmlbars "^4.2.3" ember-sinon-qunit@5.0.0: version "5.0.0" @@ -9449,17 +7255,17 @@ ember-source-channel-url@^3.0.0: dependencies: node-fetch "^2.6.0" -ember-source@~3.27.2: - version "3.27.5" - resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.27.5.tgz#8e9ce24c17e7a16dc3c2b128d3d3e24ea79e6726" - integrity sha512-oSGM9mD6BuOcGilYqU+F2MtCferQhKWO3REX1P9qgN1Wzfa5kXjbjBBdPNWfBtg7bZLGM27H8JgiV6+t3uGegA== +ember-source@3.28.8: + version "3.28.8" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.28.8.tgz#c58fd4a1538d6c4b9aebe76c764cabf5396c64d9" + integrity sha512-hA15oYzbRdi9983HIemeVzzX2iLcMmSPp6akUiMQhFZYWPrKksbPyLrO6YpZ4hNM8yBjQSDXEkZ1V3yxBRKjUA== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" "@babel/plugin-transform-object-assign" "^7.8.3" "@ember/edition-utils" "^1.2.0" - "@glimmer/vm-babel-plugins" "0.78.2" - babel-plugin-debug-macros "^0.3.3" + "@glimmer/vm-babel-plugins" "0.80.3" + babel-plugin-debug-macros "^0.3.4" babel-plugin-filter-imports "^4.0.0" broccoli-concat "^4.2.4" broccoli-debug "^0.6.4" @@ -9494,9 +7300,9 @@ ember-stargate@^0.2.0: tracked-maps-and-sets "^2.1.0" ember-string-fns@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ember-string-fns/-/ember-string-fns-1.4.0.tgz#bde188643d54b58c501d332e15ba5c04733a6233" - integrity sha512-1pcdUA40PdzzsUAUQ7U4eMRDtxOeUpKwyyInCkj3f/Qdt/QbXZkA/Ix9vWWly9N4QcO7akK0xHWIJiu4XzP8Rw== + version "1.4.1" + resolved "https://registry.yarnpkg.com/ember-string-fns/-/ember-string-fns-1.4.1.tgz#3890c80e4d73db78a5d3027c0ec9a3e677b3813a" + integrity sha512-PtMjvFq34+ygsIaug0QYW+0e/CsHHRfffFEMIR+R2MIgNYLz/FED4gRMwtPZsUXsrYVr0JMvvbwwAeFxpyxFFw== dependencies: ember-cli-babel "^7.7.3" @@ -9534,30 +7340,30 @@ ember-template-lint@^2.0.1: yargs "^16.2.0" ember-template-recast@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ember-template-recast/-/ember-template-recast-5.0.1.tgz#c5d9e7208bf629ee368a3792328f245f3c651003" - integrity sha512-MtjyYtr5jnE72i/jVkI3m2QOdozglLwXS3HN74Ge9cm7dz5GoDszVvUksyj/9xqpIP31LMXjs2bZetRGvinU1Q== + version "5.0.3" + resolved "https://registry.yarnpkg.com/ember-template-recast/-/ember-template-recast-5.0.3.tgz#79df27a70bdce7be17f14db13886afde1e9d02d6" + integrity sha512-qsJYQhf29Dk6QMfviXhUPE+byMOs6iRQxUDHgkj8yqjeppvjHaFG96hZi/NAXJTm/M7o3PpfF5YlmeaKtI9UeQ== dependencies: "@glimmer/reference" "^0.65.0" "@glimmer/syntax" "^0.65.0" "@glimmer/validator" "^0.65.0" async-promise-queue "^1.0.5" colors "^1.4.0" - commander "^6.2.0" - globby "^11.0.1" - ora "^5.1.0" + commander "^6.2.1" + globby "^11.0.3" + ora "^5.4.0" slash "^3.0.0" tmp "^0.2.1" - workerpool "^6.0.3" + workerpool "^6.1.4" ember-test-selectors@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-5.0.0.tgz#36c30f64498039cb88797cdda682275a460ee624" - integrity sha512-hqAPqyJLEGBYcQ9phOKvHhSCyvcSbUL8Yj2si8OASsQWxwRqbxrtk5YlkN2aZiZdp9PAd2wErS8uClG0U7tNpA== + version "5.5.0" + resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-5.5.0.tgz#114bd29c4a33eee3a328c9ce32a57a018c27f5f6" + integrity sha512-PiKhbPnidRYQ5ed/CTU3teJV3XmzkjYjsCGx1UTy7qEY/1dEqxezlZu1DtisoLJ9Y+BcjTVlE+596lo9cOXd3w== dependencies: calculate-cache-key-for-tree "^2.0.0" - ember-cli-babel "^7.22.1" - ember-cli-version-checker "^5.1.1" + ember-cli-babel "^7.26.4" + ember-cli-version-checker "^5.1.2" ember-text-measurer@^0.6.0: version "0.6.0" @@ -9576,9 +7382,9 @@ ember-tracked-storage-polyfill@^1.0.0: ember-cli-htmlbars "^5.7.1" "ember-truth-helpers@^2.1.0 || ^3.0.0", ember-truth-helpers@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ember-truth-helpers/-/ember-truth-helpers-3.0.0.tgz#86766bdca4ac9b86bce3d262dff2aabc4a0ea384" - integrity sha512-hPKG9QqruAELh0li5xaiLZtr88ioWYxWCXisAWHWE0qCP4a2hgtuMzKUPpiTCkltvKjuqpzTZCU4VhQ+IlRmew== + version "3.1.1" + resolved "https://registry.yarnpkg.com/ember-truth-helpers/-/ember-truth-helpers-3.1.1.tgz#434715926d72bcc63b8a115dec09745fda4474dc" + integrity sha512-FHwJAx77aA5q27EhdaaiBFuy9No+8yaWNT5A7zs0sIFCmf14GbcLn69vJEp6mW7vkITezizGAWhw7gL0Wbk7DA== dependencies: ember-cli-babel "^7.22.1" @@ -9591,20 +7397,15 @@ ember-validators@~4.0.0: ember-cli-babel "^7.26.3" ember-cli-htmlbars "^5.7.1" -"emoji-regex@>=6.0.0 <=6.1.1": - version "6.1.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" - integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@~6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.3.tgz#ec79a3969b02d2ecf2b72254279bf99bc7a83932" - integrity sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI= +emoji-regex@~10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.1.0.tgz#d50e383743c0f7a5945c47087295afc112e3cf66" + integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== emojis-list@^3.0.0: version "3.0.0" @@ -9614,7 +7415,7 @@ emojis-list@^3.0.0: encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" @@ -9624,14 +7425,14 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: once "^1.4.0" engine.io-parser@~5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" - integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== + version "5.0.6" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45" + integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw== -engine.io@~6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0" - integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg== +engine.io@~6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.1.tgz#8056b4526a88e779f9c280d820422d4e3eeaaae5" + integrity sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -9642,7 +7443,7 @@ engine.io@~6.2.0: cors "~2.8.5" debug "~4.3.1" engine.io-parser "~5.0.3" - ws "~8.2.3" + ws "~8.11.0" enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0: version "4.5.0" @@ -9654,9 +7455,9 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0: tapable "^1.0.0" enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -9673,16 +7474,21 @@ ensure-posix-path@^1.0.0, ensure-posix-path@^1.0.1, ensure-posix-path@^1.0.2, en resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce" integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw== -entities@^1.1.2, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -9714,73 +7520,74 @@ error@^7.0.0: dependencies: string-template "~0.2.1" -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== dependencies: + available-typed-arrays "^1.0.5" call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function-bind "^1.1.1" - get-intrinsic "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.2" object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-get-iterator@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" - integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-get-iterator@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.1.0" - has-symbols "^1.0.1" - is-arguments "^1.1.0" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" is-map "^2.0.2" is-set "^2.0.2" - is-string "^1.0.5" + is-string "^1.0.7" isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -9798,12 +7605,12 @@ escalade@^3.1.1: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^4.0.0: version "4.0.0" @@ -9823,11 +7630,11 @@ escodegen@^2.0.0: source-map "~0.6.1" eslint-config-prettier@^8.3.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + version "8.7.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz#f1cc58a8afebc50980bd53475451df146c13182d" + integrity sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA== -eslint-plugin-ember@^10.4.2: +eslint-plugin-ember@^10.5.8: version "10.6.1" resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-10.6.1.tgz#04ea84cc82307f64a2faa4f2855b30e5ebf9f722" integrity sha512-R+TN3jwhYQ2ytZCA1VkfJDZSGgHFOHjsHU1DrBlRXYRepThe56PpuGxywAyDvQ7inhoAz3e6G6M60PzpvjzmNg== @@ -9861,14 +7668,14 @@ eslint-plugin-node@^11.0.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-prettier@^3.4.0: +eslint-plugin-prettier@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-qunit@^6.1.1: +eslint-plugin-qunit@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-qunit/-/eslint-plugin-qunit-6.2.0.tgz#f4efda29da99523e560848d9592c39c0590c308d" integrity sha512-KvPmkIC2MHpfRxs/r8WUeeGkG6y+3qwSi2AZIBtjcM/YG6Z3k0GxW5Hbu3l7X0TDhljVCeBb9Q5puUkHzl83Mw== @@ -9912,11 +7719,11 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^7.27.0: +eslint@^7.32.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== @@ -9984,12 +7791,12 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: esprima@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" - integrity sha1-U88kes2ncxPlUcOqLnM0LT+099k= + integrity sha512-xoBq/MIShSydNZOkjkoCEjqod963yHNXTLC40ypBhop6yPqflPz/vTinmCfSrGcywVLnSftRf6a0kJLdFdzemw== esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -10006,9 +7813,9 @@ estraverse@^4.1.1: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^0.6.1: version "0.6.1" @@ -10023,7 +7830,7 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eventemitter3@^4.0.0: version "4.0.7" @@ -10033,7 +7840,7 @@ eventemitter3@^4.0.0: events-to-array@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6" - integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y= + integrity sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA== events@^3.0.0, events@^3.2.0: version "3.3.0" @@ -10049,9 +7856,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@^1.0.0: version "1.0.0" @@ -10130,17 +7937,17 @@ execa@^5.0.0: exists-sync@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/exists-sync/-/exists-sync-0.0.4.tgz#9744c2c428cc03b01060db454d4b12f0ef3c8879" - integrity sha1-l0TCxCjMA7AQYNtFTUsS8O88iHk= + integrity sha512-cy5z7K+05RFxHAWY37dSDkPWmuTi+VzrA/xLwPDHmwQPMnO/kVhu6jheGaItlnNRoOE6f5MAjxy3VEupfrHigQ== exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -10153,42 +7960,43 @@ expand-brackets@^2.1.4: expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== dependencies: homedir-polyfill "^1.0.1" express@^4.10.7, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.20.1" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.11.0" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -10196,19 +8004,19 @@ express@^4.10.7, express@^4.17.1: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: +extend@^3.0.0, extend@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -10241,17 +8049,7 @@ extract-stack@^2.0.0: resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fake-xml-http-request@^2.1.1: +fake-xml-http-request@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/fake-xml-http-request/-/fake-xml-http-request-2.1.2.tgz#f1786720cae50bbb46273035a0173414f3e85e74" integrity sha512-HaFMBi7r+oEC9iJNpc3bvcW7Z7iLmM26hPDmlb0mFwyANSsOQAtJxbdWsXITKOzZUyMYK0zYCv3h5yDj9TsiXg== @@ -10259,7 +8057,7 @@ fake-xml-http-request@^2.1.1: faker@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" - integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= + integrity sha512-ILKg69P6y/D8/wSmDXw35Ly0re8QzQ8pMfBCflsGiZG2ZjMUNLYNexA6lz5pkmJlepVdsiDFUxYAzPQ9/+iGLA== faker@^5.5.3: version "5.5.3" @@ -10269,7 +8067,7 @@ faker@^5.5.3: fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -10293,22 +8091,10 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-glob@^3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.0.3, fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -10324,7 +8110,7 @@ fast-json-stable-stringify@^2.0.0: fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-memoize@^2.5.2: version "2.5.2" @@ -10334,7 +8120,7 @@ fast-memoize@^2.5.2: fast-ordered-set@^1.0.0, fast-ordered-set@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-ordered-set/-/fast-ordered-set-1.0.3.tgz#3fbb36634f7be79e4f7edbdb4a357dee25d184eb" - integrity sha1-P7s2Y097555PftvbSjV97iXRhOs= + integrity sha512-MxBW4URybFszOx1YlACEoK52P6lE3xiFcPaGCUZ7QQOZ6uJXKo++Se8wa31SjcZ+NC/fdAWX7UtKEfaGgHS2Vg== dependencies: blank-object "^1.0.1" @@ -10367,13 +8153,13 @@ fast-sourcemap-concat@^2.1.0: sourcemap-validator "^1.1.0" fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" -fault@^1.0.0, fault@^1.0.1: +fault@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== @@ -10388,9 +8174,9 @@ faye-websocket@^0.11.3: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -10402,11 +8188,11 @@ figgy-pudding@^3.5.1: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0, figures@^3.2.0: +figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -10431,14 +8217,14 @@ filesize@^4.1.2: integrity sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA== filesize@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + version "6.4.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" + integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -10452,7 +8238,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.2, finalhandler@~1.1.2: +finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== @@ -10465,6 +8251,19 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-babel-config@^1.1.0, find-babel-config@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" @@ -10483,9 +8282,9 @@ find-cache-dir@^2.1.0: pkg-dir "^3.0.0" find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" make-dir "^3.0.2" @@ -10499,7 +8298,7 @@ find-index@^1.1.0: find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" @@ -10559,9 +8358,9 @@ findup-sync@^4.0.0: resolve-dir "^1.0.1" fireworm@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/fireworm/-/fireworm-0.7.1.tgz#ccf20f7941f108883fcddb99383dbe6e1861c758" - integrity sha1-zPIPeUHxCIg/zduZOD2+bhhhx1g= + version "0.7.2" + resolved "https://registry.yarnpkg.com/fireworm/-/fireworm-0.7.2.tgz#bc5736515b48bd30bf3293a2062e0b0e0361537a" + integrity sha512-GjebTzq+NKKhfmDxjKq3RXwQcN9xRmZWhnnuC9L+/x5wBQtR0aaQM50HsjrzJ2wc28v1vSdfOpELok0TKR4ddg== dependencies: async "~0.2.9" is-type "0.0.1" @@ -10598,9 +8397,9 @@ fixturify@^1.2.0: matcher-collection "^2.0.0" fixturify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-2.1.0.tgz#a0437faac9b6e4aeb35910a1214df866aeec5d75" - integrity sha512-gHq6UCv8DE91EpiaRSzrmvLoRvFOBzI961IQ3gXE5wfmMM1TtApDcZAonG2hnp6GJrVFCxHwP01wSw9VQJiJ1w== + version "2.1.1" + resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-2.1.1.tgz#e962d72f062600cb81a9651086f60d822c72d998" + integrity sha512-SRgwIMXlxkb6AUgaVjIX+jCEqdhyXu9hah7mcK+lWynjKtX73Ux1TDv71B7XyaQ+LJxkYRHl5yCL8IycAvQRUw== dependencies: "@types/fs-extra" "^8.1.0" "@types/minimatch" "^3.0.3" @@ -10623,9 +8422,9 @@ flat@^5.0.0: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== flush-write-stream@^1.0.0: version "1.1.1" @@ -10643,14 +8442,14 @@ focus-trap@^6.7.1: tabbable "^5.3.3" focusable-selectors@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/focusable-selectors/-/focusable-selectors-0.3.0.tgz#0cf0c617c0f130b3d421be6787acb95b0b4936c4" - integrity sha512-R3zJNkDh17VnJZVFtMI3JGoUF8Zld55MKrfiHEjhVAN0+BXxYnjiyMkvAHoLNVs4jvJjjbT9O9c3QInrDZiBOA== + version "0.3.1" + resolved "https://registry.yarnpkg.com/focusable-selectors/-/focusable-selectors-0.3.1.tgz#7eacbca8dc6cc8d7f7563e5f5cc3699b91e20aaa" + integrity sha512-5JLtr0e1YJIfmnVlpLiG+av07dd0Xkf/KfswsXcei5KmLfdwOysTQsjF058ynXniujb1fvev7nql1x+CkC5ikw== follow-redirects@^1.0.0: - version "1.13.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" - integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== for-each@^0.3.3: version "0.3.3" @@ -10662,36 +8461,26 @@ for-each@^0.3.3: for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" format@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fraction.js@^4.2.0: version "4.2.0" @@ -10701,19 +8490,19 @@ fraction.js@^4.2.0: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -10721,7 +8510,7 @@ from2@^2.1.0: fs-extra@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" - integrity sha1-1OQ0KpZnXLeEZjOmCZJJMytTmVI= + integrity sha512-w1RvhdLZdU9V3vQdL+RooGlo6b9R9WVoBanOfoJvosWlqSKvrjFlci2oVhwvLwZXBtM7khyPvZ8r3fwsim3o0A== dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -10792,19 +8581,7 @@ fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-merger@^3.0.1, fs-merger@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fs-merger/-/fs-merger-3.1.0.tgz#f30f74f6c70b2ff7333ec074f3d2f22298152f3b" - integrity sha512-RZ9JtqugaE8Rkt7idO5NSwcxEGSDZpLmVFjtVQUm3f+bWun7JAU6fKyU6ZJUeUnKdJwGx8uaro+K4QQfOR7vpA== - dependencies: - broccoli-node-api "^1.7.0" - broccoli-node-info "^2.1.0" - fs-extra "^8.0.1" - fs-tree-diff "^2.0.1" - rimraf "^2.6.3" - walk-sync "^2.0.2" - -fs-merger@^3.2.1: +fs-merger@^3.0.1, fs-merger@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/fs-merger/-/fs-merger-3.2.1.tgz#a225b11ae530426138294b8fbb19e82e3d4e0b3b" integrity sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug== @@ -10850,7 +8627,7 @@ fs-updater@^1.0.4: fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -10860,7 +8637,7 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^1.2.7: version "1.2.13" @@ -10870,7 +8647,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.1, fsevents@~2.3.2: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -10880,15 +8657,30 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== fuse.js@^6.4.6: - version "6.4.6" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.4.6.tgz#62f216c110e5aa22486aff20be7896d19a059b79" - integrity sha512-/gYxR/0VpXmWSfZOIPS3rWwU8SHgsRTwWuXhyb2O6s7aRuVtHtxCkR33bNYu3wyLyNx/Wpv0vU7FZy8Vj53VNw== + version "6.6.2" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.6.2.tgz#fe463fed4b98c0226ac3da2856a415576dc9a111" + integrity sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA== gauge@^4.0.3: version "4.0.4" @@ -10907,7 +8699,7 @@ gauge@^4.0.3: gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -10928,14 +8720,14 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" @@ -10950,7 +8742,7 @@ get-package-type@^0.1.0: get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== get-stdin@^8.0.0: version "8.0.0" @@ -10987,14 +8779,7 @@ get-symbol-description@^1.0.0: get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== git-hooks-list@1.0.3: version "1.0.3" @@ -11007,21 +8792,19 @@ git-repo-info@^2.1.1: integrity sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg== github-slugger@^1.0.0, github-slugger@^1.2.1, github-slugger@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" - integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== - dependencies: - emoji-regex ">=6.0.0 <=6.1.1" + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -11038,7 +8821,7 @@ glob-parent@^6.0.2: glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== glob-to-regexp@^0.4.1: version "0.4.1" @@ -11048,7 +8831,7 @@ glob-to-regexp@^0.4.1: glob@^5.0.10: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== dependencies: inflight "^1.0.4" inherits "2" @@ -11056,15 +8839,15 @@ glob@^5.0.10: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.4, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.0.4, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" @@ -11080,7 +8863,7 @@ global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== dependencies: expand-tilde "^2.0.2" homedir-polyfill "^1.0.1" @@ -11093,17 +8876,10 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" - integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== - dependencies: - type-fest "^0.20.2" - -globals@^13.9.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.6.0, globals@^13.9.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" @@ -11112,6 +8888,13 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globalyzer@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" @@ -11131,16 +8914,16 @@ globby@10.0.0: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== +globby@^11.0.2, globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" globrex@^0.1.2: @@ -11151,16 +8934,18 @@ globrex@^0.1.2: good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== dependencies: delegate "^3.1.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" -graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -11168,12 +8953,12 @@ graceful-fs@^4.2.4, graceful-fs@^4.2.9: "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.2, handlebars@^4.7.3: version "4.7.7" @@ -11187,57 +8972,64 @@ handlebars@^4.0.13, handlebars@^4.0.4, handlebars@^4.3.1, handlebars@^4.4.2, han optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" has-ansi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-3.0.0.tgz#36077ef1d15f333484aa7fa77a28606f1c655b37" - integrity sha1-Ngd+8dFfMzSEqn+neihgbxxlWzc= + integrity sha512-5JRDTvNq6mVkaMHQVXrGnaCXHD6JfqxwCy8LA/DQSqLLqePR9uaJVm2u3Ek/UziJFQz+d1ul99RtfIhE2aorkQ== dependencies: ansi-regex "^3.0.0" -has-bigints@^1.0.0, has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= + integrity sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw== + +has-dynamic-import@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz#9bca87846aa264f2ad224fcd014946f5e5182f52" + integrity sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" @@ -11249,12 +9041,12 @@ has-tostringtag@^1.0.0: has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -11263,7 +9055,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -11272,12 +9064,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -11329,9 +9121,9 @@ hast-util-parse-selector@^2.0.0: integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-to-html@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-7.1.2.tgz#db677f0ee483658cea0eecc9dec30aba42b67111" - integrity sha512-pu73bvORzdF6XZgwl9eID/0RjBb/jtRfoGRRSykpR1+o9rCdiAHpgkSukZsQBRlIqMg6ylAcd7F0F7myJUb09Q== + version "7.1.3" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz#9f339ca9bea71246e565fc79ff7dbfe98bb50f5e" + integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw== dependencies: ccount "^1.0.0" comma-separated-tokens "^1.0.0" @@ -11396,17 +9188,10 @@ heimdalljs@^0.2.0, heimdalljs@^0.2.1, heimdalljs@^0.2.3, heimdalljs@^0.2.5, heim dependencies: rsvp "~3.2.1" -heimdalljs@^0.3.0: - version "0.3.3" - resolved "https://registry.yarnpkg.com/heimdalljs/-/heimdalljs-0.3.3.tgz#e92d2c6f77fd46d5bf50b610d28ad31755054d0b" - integrity sha1-6S0sb3f9RtW/ULYQ0orTF1UFTQs= - dependencies: - rsvp "~3.2.1" - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -11415,7 +9200,7 @@ hmac-drbg@^1.0.1: home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" @@ -11428,9 +9213,9 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^3.0.8: version "3.0.8" @@ -11440,9 +9225,9 @@ hosted-git-info@^3.0.8: lru-cache "^6.0.0" hosted-git-info@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.1.tgz#710ef5452ea429a844abc33c981056e7371edab7" - integrity sha512-eT7NrxAsppPRQEBSwKSosReE+v8OzABwEScQYk5d4uxaEPlzxTIku7LINXtBGalthkLhJnq5lBI89PfK43zAKg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" @@ -11463,52 +9248,50 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -htmlparser2@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== +htmlparser2@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== dependencies: domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: depd "~1.1.2" inherits "2.0.3" setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" http-proxy@^1.13.1, http-proxy@^1.18.1: version "1.18.1" @@ -11519,24 +9302,23 @@ http-proxy@^1.13.1, http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https/-/https-1.0.0.tgz#3c37c7ae1a8eeb966904a2ad1e975a194b7ed3a4" - integrity sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q= + integrity sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg== human-signals@^1.1.1: version "1.1.1" @@ -11584,22 +9366,22 @@ ieee754@^1.1.13, ieee754@^1.1.4: iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^5.1.1, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immutable@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -11612,12 +9394,12 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== include-path-searcher@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/include-path-searcher/-/include-path-searcher-0.1.0.tgz#c0cf2ddfa164fb2eae07bc7ca43a7f191cb4d7bd" - integrity sha1-wM8t36Fk+y6uB7x8pDp/GRy0170= + integrity sha512-KlpXnsZOrBGo4PPKqPFi3Ft6dcRyh8fTaqgzqDRi8jKAsngJEWWOxeFIWC8EfZtXKaZqlsNf9XRwcQ49DVgl/g== indent-string@^4.0.0: version "4.0.0" @@ -11629,20 +9411,20 @@ infer-owner@^1.0.3: resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== -inflection@1.12.0, inflection@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" - integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= +inflection@^1.12.0, inflection@~1.13.1: + version "1.13.4" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.4.tgz#65aa696c4e2da6225b148d7a154c449366633a32" + integrity sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw== inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -11650,12 +9432,12 @@ inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, i inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@^1.3.4: version "1.3.8" @@ -11665,7 +9447,7 @@ ini@^1.3.4: inline-source-map-comment@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/inline-source-map-comment/-/inline-source-map-comment-1.0.5.tgz#50a8a44c2a790dfac441b5c94eccd5462635faf6" - integrity sha1-UKikTCp5DfrEQbXJTszVRiY1+vY= + integrity sha512-a3/m6XgooVCXkZCduOb7pkuvUtNKt4DaqaggKKJrMQHQsqt6JcJXEreExeZiiK4vWL/cM/uF6+chH05pz2/TdQ== dependencies: chalk "^1.0.0" get-stdin "^4.0.1" @@ -11711,12 +9493,12 @@ inquirer@^7.3.3: strip-ansi "^6.0.0" through "^2.3.6" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +internal-slot@^1.0.3, internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - get-intrinsic "^1.1.0" + get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" @@ -11725,26 +9507,27 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -intersection-observer-admin@~0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/intersection-observer-admin/-/intersection-observer-admin-0.2.13.tgz#00a021695bf5aef8d198204514d2f849fd27d089" - integrity sha512-REIM59IHXPe9U5eTnowurzzfhgqVkSImZJnOSJZTAJ0LnyJqw8S/eD5s8ZYneQfm9JszhGIBwudF9gF02A3BpQ== +intersection-observer-admin@~0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/intersection-observer-admin/-/intersection-observer-admin-0.3.3.tgz#176a2a08c1cfa9ec3bc74d81cb9ba6483c30e625" + integrity sha512-aKMJPw/8cxybcgYTbnwGn87VgSFbSNNqeChRJahD+ai+jtwlCOdIcEvtuBd2BWO9bPuylVgeQVmGGfX2aS1NIg== -intl-messageformat-parser@6.4.3, intl-messageformat-parser@^6.0.5: - version "6.4.3" - resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.4.3.tgz#4326201256c52907f342c7bb058208113c3c7f95" - integrity sha512-gpB7OeKDSd9wqjIQ7wVQM9byrpMlokGoUfJND7DS9SjoBbOsZIHAHw+lrmAWYmq+MI3WQUeLouSFdYAZ6zSX9A== +intl-messageformat-parser@^6.0.5: + version "6.4.4" + resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.4.4.tgz#abbd94e96dc4ff41607376bfab024553450cc1e0" + integrity sha512-7AaFKNZEfzLQR6+jivOuz9e7yA8ka5KrmLebgY4QHTRLf8r64dp3LjnW98LkBWjdk8GK0sawD2dHDqW++A/pXA== dependencies: - "@formatjs/ecma402-abstract" "1.6.3" + "@formatjs/ecma402-abstract" "1.6.4" tslib "^2.1.0" intl-messageformat@^9.3.6: - version "9.5.3" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.5.3.tgz#cb89a91cc2da875c5c824d374ba8209fac63a3ca" - integrity sha512-Ei8vH41/icJsc16ZfWk1FzZ2SpaVn0gElXsQCKKPerxK/28m1gVdH0G26GuCqAyz5ETEJiSRn8sPMaSWJDuTjg== + version "9.13.0" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.13.0.tgz#97360b73bd82212e4f6005c712a4a16053165468" + integrity sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw== dependencies: - fast-memoize "^2.5.2" - intl-messageformat-parser "6.4.3" + "@formatjs/ecma402-abstract" "1.11.4" + "@formatjs/fast-memoize" "1.2.1" + "@formatjs/icu-messageformat-parser" "2.1.0" tslib "^2.1.0" invariant@^2.2.2: @@ -11762,7 +9545,7 @@ ipaddr.js@1.9.1: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -11786,27 +9569,39 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4, is-arguments@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== dependencies: binary-extensions "^1.0.0" @@ -11818,13 +9613,14 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-buffer@^1.1.4, is-buffer@^1.1.5: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -11834,34 +9630,22 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -11872,10 +9656,12 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-decimal@^1.0.0: version "1.0.4" @@ -11901,14 +9687,14 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: kind-of "^6.0.2" is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" @@ -11920,7 +9706,7 @@ is-extendable@^1.0.1: is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finite@^1.0.0: version "1.1.0" @@ -11930,14 +9716,14 @@ is-finite@^1.0.0: is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -11947,23 +9733,16 @@ is-fullwidth-code-point@^3.0.0: is-git-url@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-git-url/-/is-git-url-1.0.0.tgz#53f684cd143285b52c3244b4e6f28253527af66b" - integrity sha1-U/aEzRQyhbUsMkS05vKCU1J69ms= + integrity sha512-UCFta9F9rWFSavp9H3zHEHrARUfZbdJvmHKeEpds4BK3v7W2LdXoNypMtXXi5w5YBDEBCTYmbI+vsSwI8LYJaQ== is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -11990,20 +9769,22 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" @@ -12015,7 +9796,7 @@ is-number@^7.0.0: is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-obj@^2.0.0: version "2.0.0" @@ -12027,10 +9808,10 @@ is-plain-obj@2.1.0, is-plain-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-obj@^1.1, is-plain-obj@^1.1.0: +is-plain-obj@^1.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -12039,18 +9820,10 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= - -is-regex@^1.1.1, is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-regex@^1.1.4: version "1.1.4" @@ -12063,34 +9836,31 @@ is-regex@^1.1.4: is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.7: +is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -12098,34 +9868,34 @@ is-string@^1.0.7: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-type@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/is-type/-/is-type-0.0.1.tgz#f651d85c365d44955d14a51d8d7061f3f6b4779c" - integrity sha1-9lHYXDZdRJVdFKUdjXBh8/a0d5w= + integrity sha512-YwJh/zBVrcJ90aAnPBM0CbHvm7lG9ao7lIFeqTZ1UQj4iFLpM5CikdaU+dGGesrMJwxLqPGmjjrUrQ6Kn3Zh+w== dependencies: core-util-is "~1.0.0" -is-typed-array@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" - integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: - available-typed-arrays "^1.0.2" + available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.18.0-next.2" - foreach "^2.0.5" - has-symbols "^1.0.1" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" @@ -12137,37 +9907,30 @@ is-weakmap@^2.0.1: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== - is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== is-wsl@^2.2.0: version "2.2.0" @@ -12179,12 +9942,12 @@ is-wsl@^2.2.0: isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isarray@^2.0.5: version "2.0.5" @@ -12192,45 +9955,41 @@ isarray@^2.0.5: integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isbinaryfile@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" - integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" istanbul-lib-report@^3.0.0: @@ -12243,9 +10002,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -12253,7 +10012,7 @@ istanbul-reports@^3.0.2: istextorbinary@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.1.0.tgz#dbed2a6f51be2f7475b68f89465811141b758874" - integrity sha1-2+0qb1G+L3R1to+JRlgRFBt1iHQ= + integrity sha512-kT1g2zxZ5Tdabtpp9VSdOzW9lb6LXImyWbzbQeTxoRtHhurC9Ej9Wckngr2+uepPL09ky/mJHmN9jeJPML5t6A== dependencies: binaryextensions "1 || 2" editions "^1.1.1" @@ -12271,7 +10030,7 @@ istextorbinary@^2.5.1: ivy-codemirror@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ivy-codemirror/-/ivy-codemirror-2.1.0.tgz#c06f1606c375610bf62b007a21a9e63f5854175e" - integrity sha1-wG8WBsN1YQv2KwB6IanmP1hUF14= + integrity sha512-+Ha6Yf39fiK3dfQD5vlanrQ8GMIf/KVRbxzEzG+AsvAgUNSO8VECCfIRzdHQZcBfi9jNCaT+9q6VQd7mSqNalQ== dependencies: codemirror "~5.15.0" ember-cli-babel "^6.0.0" @@ -12286,20 +10045,15 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jquery@^3.4.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" - integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== - -jquery@^3.5.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16" - integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== +jquery@^3.4.1, jquery@^3.5.1: + version "3.6.4" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.4.tgz#ba065c188142100be4833699852bf7c24dc0252f" + integrity sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ== js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= + integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -12309,7 +10063,7 @@ js-string-escape@^1.0.1: js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.2.5, js-yaml@^3.2.7: version "3.14.1" @@ -12320,24 +10074,19 @@ js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.2.5, js-yaml@^3.2.7: esprima "^4.0.0" js-yaml@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsdom@^16.4.0: - version "16.5.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.1.tgz#4ced6bbd7b77d67fb980e64d9e3e6fb900f97dd6" - integrity sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA== + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: abab "^2.0.5" - acorn "^8.0.5" + acorn "^8.2.4" acorn-globals "^6.0.0" cssom "^0.4.4" cssstyle "^2.3.0" @@ -12345,12 +10094,13 @@ jsdom@^16.4.0: decimal.js "^10.2.1" domexception "^2.0.1" escodegen "^2.0.0" + form-data "^3.0.0" html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" parse5 "6.0.1" - request "^2.88.2" - request-promise-native "^1.0.9" saxes "^5.0.1" symbol-tree "^3.2.4" tough-cookie "^4.0.0" @@ -12359,14 +10109,14 @@ jsdom@^16.4.0: webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.4.4" + whatwg-url "^8.5.0" + ws "^7.4.6" xml-name-validator "^3.0.0" jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== jsesc@^2.5.0, jsesc@^2.5.1: version "2.5.2" @@ -12376,12 +10126,12 @@ jsesc@^2.5.0, jsesc@^2.5.1: jsesc@~0.3.x: version "0.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.3.0.tgz#1bf5ee63b4539fe2e26d0c1e99c240b97a457972" - integrity sha1-G/XuY7RTn+LibQwemcJAuXpFeXI= + integrity sha512-UHQmAeTXV+iwEk0aHheJRqo6Or90eDxI6KIYpHSjKLXKuKlPt1CQ7tGBerFcFA8uKU5mYxiPMlckmFptd5XZzA== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" @@ -12403,53 +10153,31 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + jsonify "^0.0.1" json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -json5@^2.2.2: +json5@^2.1.2, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -12457,14 +10185,14 @@ json5@^2.2.2: jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" @@ -12477,10 +10205,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== jsonlint@^1.6.3: version "1.6.3" @@ -12490,32 +10218,22 @@ jsonlint@^1.6.3: JSV "^4.0.x" nomnom "^1.5.x" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - just-extend@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.1.tgz#158f1fdb01f128c411dc8b286a7b4837b3545282" - integrity sha512-aWgeGFW67BP3e5181Ep1Fv2v8z//iBJfrvyTnq8wG86vEESwmonn1zPBJ0VfmT9CJq2FIT0VsETtrNFm2a+SHA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" @@ -12539,7 +10257,7 @@ layout-bin-packer@^1.4.0: leek@0.0.24: version "0.0.24" resolved "https://registry.yarnpkg.com/leek/-/leek-0.0.24.tgz#e400e57f0e60d8ef2bd4d068dc428a54345dbcda" - integrity sha1-5ADlfw5g2O8r1NBo3EKKVDRdvNo= + integrity sha512-6PVFIYXxlYF0o6hrAsHtGpTmi06otkwNrMcmQ0K96SeSRHPREPa9J3nJZ1frliVH7XT0XFswoJFQoXsDukzGNQ== dependencies: debug "^2.1.0" lodash.assign "^3.2.0" @@ -12556,7 +10274,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -12578,22 +10296,22 @@ license-checker@^25.0.1: treeify "^1.1.0" lilconfig@^2.0.5, lilconfig@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== line-column@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" - integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + integrity sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww== dependencies: isarray "^1.0.0" isobject "^2.0.0" lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== linkify-it@^2.0.0: version "2.2.0" @@ -12603,9 +10321,9 @@ linkify-it@^2.0.0: uc.micro "^1.0.1" linkify-it@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" - integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: uc.micro "^1.0.1" @@ -12631,17 +10349,16 @@ lint-staged@^10.2.11: stringify-object "^3.3.0" listr2@^3.2.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.4.3.tgz#543bcf849d5ffc70602708b69d2daac73f751699" - integrity sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA== + version "3.14.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: - chalk "^4.1.0" cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" + colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" - rxjs "^6.6.6" + rfdc "^1.3.0" + rxjs "^7.5.1" through "^2.3.8" wrap-ansi "^7.0.0" @@ -12653,7 +10370,7 @@ livereload-js@^3.3.1: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -12670,19 +10387,19 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== +loader-utils@^1.2.3: + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -12701,7 +10418,7 @@ locale-emoji@^0.3.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -12731,7 +10448,7 @@ locate-path@^6.0.0: lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= + integrity sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ== dependencies: lodash._basecopy "^3.0.0" lodash.keys "^3.0.0" @@ -12739,12 +10456,12 @@ lodash._baseassign@^3.0.0: lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + integrity sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ== lodash._baseflatten@^3.0.0: version "3.1.4" resolved "https://registry.yarnpkg.com/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz#0770ff80131af6e34f3b511796a7ba5214e65ff7" - integrity sha1-B3D/gBMa9uNPO1EXlqe6UhTmX/c= + integrity sha512-fESngZd+X4k+GbTxdMutf8ohQa0s3sJEHIcwtu4/LsIQ2JTDzdRxDCMQjW+ezzwRitLmHnacVVmosCbxifefbw== dependencies: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" @@ -12752,12 +10469,12 @@ lodash._baseflatten@^3.0.0: lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + integrity sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ== lodash._createassigner@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - integrity sha1-g4pbri/aymOsIt7o4Z+k5taXCxE= + integrity sha512-LziVL7IDnJjQeeV95Wvhw6G28Z8Q6da87LWKOPWmzBLv4u6FAT/x5v00pyGW0u38UoogNF2JnD3bGgZZDaNEBw== dependencies: lodash._bindcallback "^3.0.0" lodash._isiterateecall "^3.0.0" @@ -12766,22 +10483,22 @@ lodash._createassigner@^3.0.0: lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA== lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + integrity sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ== lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== lodash.assign@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - integrity sha1-POnwI0tLIiPilrj6CsH+6OvKZPo= + integrity sha512-/VVxzgGBmbphasTg51FrztxQJ/VgAUpol6zmJuSVSGcNg4g7FA4z7rQV8Ovr9V3vFBNWZhvKWHfpAytjTVUfFA== dependencies: lodash._baseassign "^3.0.0" lodash._createassigner "^3.0.0" @@ -12790,34 +10507,34 @@ lodash.assign@^3.2.0: lodash.assignin@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= + integrity sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg== lodash.castarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" - integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= + integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== lodash.clonedeep@^4.4.1: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== lodash.debounce@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-3.1.1.tgz#812211c378a94cc29d5aa4e3346cf0bfce3a7df5" - integrity sha1-gSIRw3ipTMKdWqTjNGzwv846ffU= + integrity sha512-lcmJwMpdPAtChA4hfiwxTtgFeNAaow701wWUgVUqeD0XJF7vMXIN+bu/2FJSGxT0NUbZy9g9VFrlOFfPjl+0Ew== dependencies: lodash._getnative "^3.0.0" lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== lodash.defaultsdeep@^4.6.1: version "4.6.1" @@ -12827,12 +10544,12 @@ lodash.defaultsdeep@^4.6.1: lodash.find@^4.5.1: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= + integrity sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg== lodash.flatten@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-3.0.2.tgz#de1cf57758f8f4479319d35c3e9cc60c4501938c" - integrity sha1-3hz1d1j49EeTGdNcPpzGDEUBk4w= + integrity sha512-jCXLoNcqQRbnT/KWZq2fIREHWeczrzpTR0vsycm96l/pu5hGeAntVBG0t7GuM/2wFqmnZs3d1eGptnAH2E8+xQ== dependencies: lodash._baseflatten "^3.0.0" lodash._isiterateecall "^3.0.0" @@ -12840,27 +10557,27 @@ lodash.flatten@^3.0.2: lodash.foreach@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ== lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + integrity sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ== lodash.iteratee@^4.5.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz#be4177db289a8ccc3c0990f1db26b5b22fc1554c" - integrity sha1-vkF32yiajMw8CZDx2ya1si/BVUw= + integrity sha512-yv3cSQZmfpbIKo4Yo45B1taEvxjNvcpF1CEOc0Y6dEyvhPIfEJE3twDwPgWTPQubcSgXyBwBKG6wpQvWMDOf6Q== lodash.kebabcase@^4.1.1: version "4.1.1" @@ -12870,7 +10587,7 @@ lodash.kebabcase@^4.1.1: lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + integrity sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ== dependencies: lodash._getnative "^3.0.0" lodash.isarguments "^3.0.0" @@ -12879,7 +10596,7 @@ lodash.keys@^3.0.0: lodash.last@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash.last/-/lodash.last-3.0.0.tgz#242f663112dd4c6e63728c60a3c909d1bdadbd4c" - integrity sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw= + integrity sha512-14mq7rSkCxG4XMy9lF2FbIOqqgF0aH0NfPuQ3LPR3vIh0kHnUvIYP70dqa1Hf47zyXfQ8FzAg0MYOQeSuE1R7A== lodash.merge@^4.6.0, lodash.merge@^4.6.2: version "4.6.2" @@ -12889,17 +10606,12 @@ lodash.merge@^4.6.0, lodash.merge@^4.6.2: lodash.omit@^4.1.0, lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= + integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw== lodash.template@^4.5.0: version "4.5.0" @@ -12924,14 +10636,14 @@ lodash.truncate@^4.4.2: lodash.uniq@^4.2.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash.uniqby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= + integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.5.1: +lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.5.1, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12995,11 +10707,11 @@ lru-cache@^6.0.0: yallist "^4.0.0" magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: - sourcemap-codec "^1.4.4" + sourcemap-codec "^1.4.8" make-dir@^2.0.0: version "2.1.0" @@ -13016,30 +10728,25 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - tmpl "1.0.x" + tmpl "1.0.5" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" -markdown-escapes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - markdown-it-terminal@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/markdown-it-terminal/-/markdown-it-terminal-0.2.1.tgz#670fd5ea824a7dcaa1591dcbeef28bf70aff1705" @@ -13134,6 +10841,14 @@ mdast-util-find-and-replace@^1.1.0: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +mdast-util-footnote@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz#4b226caeab4613a3362c144c94af0fdd6f7e0ef0" + integrity sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w== + dependencies: + mdast-util-to-markdown "^0.6.0" + micromark "~2.11.0" + mdast-util-from-markdown@^0.8.0: version "0.8.5" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" @@ -13152,7 +10867,7 @@ mdast-util-frontmatter@^0.2.0: dependencies: micromark-extension-frontmatter "^0.2.0" -mdast-util-gfm-autolink-literal@^0.1.0: +mdast-util-gfm-autolink-literal@^0.1.0, mdast-util-gfm-autolink-literal@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz#9c4ff399c5ddd2ece40bd3b13e5447d84e385fb7" integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A== @@ -13194,7 +10909,7 @@ mdast-util-gfm@^0.1.0: mdast-util-gfm-task-list-item "^0.1.0" mdast-util-to-markdown "^0.6.1" -mdast-util-to-hast@^10.0.0: +mdast-util-to-hast@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz#61875526a017d8857b71abc9333942700b2d3604" integrity sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ== @@ -13243,25 +10958,25 @@ mdast-util-toc@^5.1.0: unist-util-is "^4.0.0" unist-util-visit "^2.0.0" -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== mdurl@^1.0.0, mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -13284,12 +10999,12 @@ memory-streams@^0.1.3: memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-options@^1.0.1: version "1.0.1" @@ -13306,7 +11021,7 @@ merge-stream@^2.0.0: merge-trees@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-trees/-/merge-trees-1.0.1.tgz#ccbe674569787f9def17fd46e6525f5700bbd23e" - integrity sha1-zL5nRWl4f53vF/1G5lJfVwC70j4= + integrity sha512-O7TWwipLHhc9tErjq3WBvNP7I1g7Wgudl1ZkLqpT7F2MZy1yEdgnI9cpZZxBaqk+wJZu+2b9FE7D3ubUmGFHFA== dependencies: can-symlink "^1.0.0" fs-tree-diff "^0.5.4" @@ -13323,7 +11038,7 @@ merge-trees@^2.0.0: fs-updater "^1.0.4" heimdalljs "^0.2.5" -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -13336,7 +11051,14 @@ merge@^2.1.1: methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromark-extension-footnote@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz#129b74ef4920ce96719b2c06102ee7abb2b88a20" + integrity sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ== + dependencies: + micromark "~2.11.0" micromark-extension-frontmatter@^0.2.0: version "0.2.2" @@ -13346,9 +11068,9 @@ micromark-extension-frontmatter@^0.2.0: fault "^1.0.0" micromark-extension-gfm-autolink-literal@~0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.6.tgz#406a58914d7a9cc6fb4cfafccc61a8ca36d7a12a" - integrity sha512-nHbR1NUOVhmlZNsnhE5B7WJzL7Xd8lc888z4AF27IpHMtO3NstclZmbrMI+AcdTPpO1wuGVwlK1Cnq+n8Sxlrw== + version "0.5.7" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz#53866c1f0c7ef940ae7ca1f72c6faef8fed9f204" + integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw== dependencies: micromark "~2.11.3" @@ -13417,15 +11139,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -13441,24 +11155,12 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": - version "1.46.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" - integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== - -mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.26, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.29" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" - integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== - dependencies: - mime-db "1.46.0" - -mime-types@^2.1.27: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.26, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -13481,9 +11183,9 @@ mimic-fn@^2.1.0: integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mini-css-extract-plugin@^2.5.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" - integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.3.tgz#794aa4d598bf178a66b2a35fe287c3df3eac394e" + integrity sha512-CD9cXeKeXLcnMw8FZdtfrRrLaM7gwCl4nKuKn2YkY2Bw5wdlB8zU2cCzw+w2zS9RFvbrufTBkMCJACNPwqQA0w== dependencies: schema-utils "^4.0.0" @@ -13495,29 +11197,24 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@>=1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@>=1.2.5, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minimist@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" - integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "0.2.4" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.4.tgz#0085d5501e29033748a2f2a4da0180142697a475" + integrity sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ== minipass@^2.2.0: version "2.9.0" @@ -13551,19 +11248,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" - integrity sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg== - -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^0.5.6: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -13578,14 +11263,14 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: mktemp@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/mktemp/-/mktemp-0.4.0.tgz#6d0515611c8a8c84e484aa2000129b98e981ff0b" - integrity sha1-bQUVYRyKjITkhKogABKbmOmB/ws= + integrity sha512-IXnMcJ6ZyTuhRmJSjzvHSRhlVPiN9Jwc6e59V0bEJ0ba6OBeX2L0E+mRN1QseeOF4mM+F1Rit6Nh7o+rl2Yn/A== mnemonist@^0.38.0: - version "0.38.3" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" - integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== dependencies: - obliterator "^1.6.1" + obliterator "^2.0.0" morgan@^1.10.0: version "1.10.0" @@ -13599,14 +11284,14 @@ morgan@^1.10.0: on-headers "~1.0.2" mout@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/mout/-/mout-1.2.2.tgz#c9b718a499806a0632cede178e80f436259e777d" - integrity sha512-w0OUxFEla6z3d7sVpMZGBCpQvYh8PHS1wZ6Wu9GNKHMpAHWJ0if0LsQZh3DlOqw55HlhJEOMLpFnwtxp99Y5GA== + version "1.2.4" + resolved "https://registry.yarnpkg.com/mout/-/mout-1.2.4.tgz#9ffd261c4d6509e7ebcbf6b641a89b36ecdf8155" + integrity sha512-mZb9uOruMWgn/fw28DG4/yE3Kehfk1zKCLhuDU2O3vlKdnBBr4XaOCqVTflJ5aODavGUPqFHZgrFX3NJVuxGhQ== move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -13618,19 +11303,14 @@ move-concurrently@^1.0.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -13643,7 +11323,7 @@ mustache@^4.2.0: mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== mute-stream@0.0.8: version "0.0.8" @@ -13651,14 +11331,14 @@ mute-stream@0.0.8: integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanoassert@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" - integrity sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40= + integrity sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ== nanoid@^3.3.4: version "3.3.4" @@ -13685,12 +11365,12 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" @@ -13698,9 +11378,9 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== ngraph.events@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ngraph.events/-/ngraph.events-1.2.1.tgz#6e40425ef9dec1e074bbef6da56c8d79b9188fd8" - integrity sha512-D4C+nXH/RFxioGXQdHu8ELDtC6EaCiNsZtih0IvyGN81OZSUby4jXoJ5+RNWasfsd0FnKxxpAROyUMzw64QNsw== + version "1.2.2" + resolved "https://registry.yarnpkg.com/ngraph.events/-/ngraph.events-1.2.2.tgz#3ceb92d676a04a4e7ce60a09fa8e17a4f0346d7f" + integrity sha512-JsUbEOzANskax+WSYiAPETemLWYXmixuPAlmZmhIbIj6FH/WDgEGCGnRwUQBK0GjOnVm8Ui+e5IJ+5VZ4e32eQ== ngraph.graph@^19.1.0: version "19.1.0" @@ -13736,21 +11416,21 @@ no-case@^3.0.4: node-dir@^0.1.17: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== dependencies: minimatch "^3.0.2" node-fetch@^2.6.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== dependencies: whatwg-url "^5.0.0" node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-libs-browser@^2.2.1: version "2.2.1" @@ -13798,20 +11478,10 @@ node-notifier@^10.0.0: uuid "^8.3.2" which "^2.0.2" -node-releases@^1.1.70: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== - -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== node-watch@0.7.3: version "0.7.3" @@ -13821,7 +11491,7 @@ node-watch@0.7.3: nomnom@^1.5.x: version "1.8.1" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= + integrity sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ== dependencies: chalk "~0.4.0" underscore "~1.6.0" @@ -13829,7 +11499,7 @@ nomnom@^1.5.x: nopt@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== dependencies: abbrev "1" @@ -13854,7 +11524,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2: normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" @@ -13871,7 +11541,7 @@ normalize-range@^0.1.2: npm-git-info@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/npm-git-info/-/npm-git-info-1.0.3.tgz#a933c42ec321e80d3646e0d6e844afe94630e1d5" - integrity sha1-qTPELsMh6A02RuDW6ESv6UYw4dU= + integrity sha512-i5WBdj4F/ULl16z9ZhsJDMl1EQCMQhHZzBwNnKL2LOA+T8IHNeRkLCVz9uVV9SzUdGTbDq+1oXhIYMe+8148vw== npm-normalize-package-bin@^1.0.0: version "1.0.1" @@ -13905,7 +11575,7 @@ npm-run-all@^4.1.5: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" @@ -13946,32 +11616,22 @@ npmlog@^6.0.0: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + version "2.2.2" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== object-assign@4.1.1, object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - integrity sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g== + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -13987,17 +11647,12 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== +object-inspect@^1.12.2, object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-is@^1.1.4, object-is@^1.1.5: +object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -14005,7 +11660,7 @@ object-is@^1.1.4, object-is@^1.1.5: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -14013,36 +11668,43 @@ object-keys@^1.0.12, object-keys@^1.1.1: object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" -obliterator@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" - integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== dependencies: ee-first "1.1.1" @@ -14054,14 +11716,14 @@ on-headers@~1.0.2: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== dependencies: mimic-fn "^1.0.0" @@ -14113,10 +11775,10 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" -ora@^5.1.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" - integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== +ora@^5.4.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" chalk "^4.1.0" @@ -14131,17 +11793,17 @@ ora@^5.1.0: os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== osenv@^0.1.3, osenv@^0.1.4: version "0.1.5" @@ -14166,7 +11828,7 @@ p-event@^2.3.1: p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-finally@^2.0.0: version "2.0.1" @@ -14197,7 +11859,7 @@ p-limit@^3.0.2: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -14239,7 +11901,7 @@ p-timeout@^2.0.1: p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" @@ -14279,21 +11941,9 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: safe-buffer "^5.1.1" parse-duration@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.0.tgz#8605651745f61088f6fb14045c887526c291858c" - integrity sha512-X4kUkCTHU1N/kEbwK9FpUJ0UZQa90VzeczfS704frR30gljxDG0pSziws06XlK+CGRSo/1wtG1mFIdBFQTMQNw== - -parse-entities@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" + version "1.0.3" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.3.tgz#b6681f5edcc2689643b34c09ea63f86f58a35814" + integrity sha512-o6NAh12na5VvR6nFejkU0gpQ8jmOY9Y9sTU2ke3L3G/d/3z8jqmbBbeyBGHU73P4JLXfc7tJARygIK3WGIkloA== parse-entities@^2.0.0: version "2.0.0" @@ -14310,7 +11960,7 @@ parse-entities@^2.0.0: parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -14333,7 +11983,7 @@ parse-ms@^2.1.0: parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== parse-static-imports@^1.1.0: version "1.1.0" @@ -14353,7 +12003,7 @@ parseurl@~1.3.3: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== path-browserify@0.0.1: version "0.0.1" @@ -14363,12 +12013,12 @@ path-browserify@0.0.1: path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -14378,23 +12028,18 @@ path-exists@^4.0.0: path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -14403,24 +12048,24 @@ path-parse@^1.0.7: path-posix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-posix/-/path-posix-1.0.0.tgz#06b26113f56beab042545a23bfa88003ccac260f" - integrity sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8= + integrity sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA== path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + integrity sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== path-root@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + integrity sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== dependencies: path-root-regex "^0.1.0" path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-to-regexp@^1.7.0: version "1.8.0" @@ -14442,9 +12087,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -14452,22 +12097,12 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -14485,7 +12120,7 @@ pify@^2.3.0: pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" @@ -14495,14 +12130,14 @@ pify@^4.0.1: pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== pkg-dir@^3.0.0: version "3.0.0" @@ -14528,7 +12163,7 @@ pkg-dir@^5.0.0: pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + integrity sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg== dependencies: find-up "^2.1.0" @@ -14558,7 +12193,7 @@ portfinder@^1.0.28: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postcss-import@^14.1.0: version "14.1.0" @@ -14570,9 +12205,9 @@ postcss-import@^14.1.0: resolve "^1.1.7" postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" @@ -14612,17 +12247,17 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== +postcss-nested@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" + integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== dependencies: - postcss-selector-parser "^6.0.6" + postcss-selector-parser "^6.0.10" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -14632,19 +12267,10 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.1.4, postcss@^8.4.14: - version "8.4.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" - integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.2.15: - version "8.4.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5" - integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q== +postcss@^8.0.9, postcss@^8.1.4, postcss@^8.2.15: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -14658,14 +12284,14 @@ prelude-ls@^1.2.1: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== pretender@^3.2.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/pretender/-/pretender-3.4.3.tgz#a3b4160516007075d29127262f3a0063d19896e9" - integrity sha512-AlbkBly9R8KR+R0sTCJ/ToOeEoUMtt52QVCetui5zoSmeLOU3S8oobFsyPLm1O2txR6t58qDNysqPnA1vVi8Hg== + version "3.4.7" + resolved "https://registry.yarnpkg.com/pretender/-/pretender-3.4.7.tgz#34a2ae2d1fc9db440a990d50e6c0f5481d8755fc" + integrity sha512-jkPAvt1BfRi0RKamweJdEcnjkeu7Es8yix3bJ+KgBC5VpG/Ln4JE3hYN6vJym4qprm8Xo5adhWpm3HCoft1dOw== dependencies: - fake-xml-http-request "^2.1.1" + fake-xml-http-request "^2.1.2" route-recognizer "^0.3.3" prettier-linter-helpers@^1.0.0: @@ -14675,10 +12301,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.3.0: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^2.5.1: + version "2.8.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" + integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== pretty-ms@^7.0.1: version "7.0.1" @@ -14692,10 +12318,10 @@ printf@^0.6.1: resolved "https://registry.yarnpkg.com/printf/-/printf-0.6.1.tgz#b9afa3d3b55b7f2e8b1715272479fc756ed88650" integrity sha512-is0ctgGdPJ5951KulgfzvHGwJtZ5ck8l042vRkV6jrkpBzTmb/lueTqguWHy2JfVA+RY6gFVlaZgUS0j7S/dsw== -prismjs@~1.25.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" - integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== +prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== private@^0.1.6, private@^0.1.8: version "0.1.8" @@ -14710,14 +12336,14 @@ process-nextick-args@~2.0.0: process-relative-require@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-relative-require/-/process-relative-require-1.0.0.tgz#1590dfcf5b8f2983ba53e398446b68240b4cc68a" - integrity sha1-FZDfz1uPKYO6U+OYRGtoJAtMxoo= + integrity sha512-r8G5WJPozMJAiv8sDdVWKgJ4In/zBXqwJdMCGAXQt2Kd3HdbAuJVzWYM4JW150hWoaI9DjhtbjcsCCHIMxm8RA== dependencies: node-modules-path "^1.0.0" process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress@^2.0.0: version "2.0.3" @@ -14727,12 +12353,12 @@ progress@^2.0.0: promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-map-series@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/promise-map-series/-/promise-map-series-0.2.3.tgz#c2d377afc93253f6bd03dbb77755eb88ab20a847" - integrity sha1-wtN3r8kyU/a9A9u3d1XriKsgqEc= + integrity sha512-wx9Chrutvqu1N/NHzTayZjE1BgIwt6SJykQoCOic4IZ9yUDjKyVYrpLa/4YCNsV61eRENfs29hrEquVuB13Zlw== dependencies: rsvp "^3.0.14" @@ -14753,23 +12379,23 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" @@ -14811,49 +12437,51 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" qs@^6.4.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.0.tgz#8b6519121ab291c316a3e4d49cecf6d13d8c7fe5" - integrity sha512-yjACOWijC6L/kmPZZAsVBNY2zfHSIbpdpL977quseu56/8BZ2LoF5axK2bGhbzhVKt7V9xgWTtpyLbxwIoER0Q== + version "6.11.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== dependencies: side-channel "^1.0.4" -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" - integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^5.1.1: version "5.1.1" @@ -14863,7 +12491,7 @@ quick-lru@^5.1.1: quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/quick-temp/-/quick-temp-0.1.8.tgz#bab02a242ab8fb0dd758a3c9776b32f9a5d94408" - integrity sha1-urAqJCq4+w3XWKPJd2sy+aXZRAg= + integrity sha512-YsmIFfD9j2zaFwJkzI6eMG7y0lQP7YeWzgtFgNl38pGWZBSXJooZbOWwkcRot7Vt0Fg9L23pX0tqWU3VvLDsiA== dependencies: mktemp "~0.4.0" rimraf "^2.5.4" @@ -14879,19 +12507,10 @@ qunit-dom@^1.6.0: ember-cli-babel "^7.23.0" ember-cli-version-checker "^5.1.1" -qunit@^2.15.0: - version "2.19.3" - resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.19.3.tgz#bcf81a2e8d176dc19fe8dd358c4cbd08619af03a" - integrity sha512-vEnspSZ37u2oR01OA/IZ1Td5V7BvQYFECdKPv86JaBplDNa5IHg0v7jFSPoP5L5o78Dbi8sl7/ATtpRDAKlSdw== - dependencies: - commander "7.2.0" - node-watch "0.7.3" - tiny-glob "0.2.9" - -qunit@^2.16.0: - version "2.19.1" - resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.19.1.tgz#eb1afd188da9e47f07c13aa70461a1d9c4505490" - integrity sha512-gSGuw0vErE/rNjnlBW/JmE7NNubBlGrDPQvsug32ejYhcVFuZec9yoU0+C30+UgeCGwq6Ap89K65dMGo+kDGZQ== +qunit@^2.16.0, qunit@^2.17.2: + version "2.19.4" + resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.19.4.tgz#2d689bb1165edd4b812e3ed2ee06ff907e9f2ece" + integrity sha512-aqUzzUeCqlleWYKlpgfdHHw9C6KxkB9H3wNfiBg5yHqQMzy0xw/pbCRHYFkjl8MsP/t8qkTQE+JTYL71azgiew== dependencies: commander "7.2.0" node-watch "0.7.3" @@ -14922,28 +12541,38 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" raw-body@~1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" - integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= + integrity sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg== dependencies: bytes "1" string_decoder "0.10" react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== read-cache@^1.0.0: version "1.0.0" @@ -14955,7 +12584,7 @@ read-cache@^1.0.0: read-installed@~4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= + integrity sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ== dependencies: debuglog "^1.0.1" read-package-json "^2.0.0" @@ -14979,16 +12608,16 @@ read-package-json@^2.0.0: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" path-type "^3.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -14999,9 +12628,9 @@ read-pkg@^3.0.0: util-deprecate "~1.0.1" "readable-stream@2 || 3", readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -15010,7 +12639,7 @@ read-pkg@^3.0.0: readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -15036,13 +12665,6 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -15063,39 +12685,32 @@ recast@^0.18.1: recursive-readdir-sync@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz#1dbf6d32f3c5bb8d3cde97a6c588d547a9e13d56" - integrity sha1-Hb9tMvPFu4083pemxYjVR6nhPVY= + integrity sha512-QhkBh/V7T3L2m8FrwZEZ/VnSZU35bv7DSy/VlKVfcq10zvwwuxeuDLH7DZYFGHFyXefHchZmsHFLELR7poGjog== redeyed@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a" - integrity sha1-6WwZO0DAgWsArshCaY5hGF5VSYo= + integrity sha512-8eEWsNCkV2rvwKLS1Cvp5agNjMhwRe2um+y32B2+3LqOzg4C9BBPs6vzAfV16Ivb8B9HPNKIqd8OrdBws8kNlQ== dependencies: esprima "~3.0.0" refractor@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.5.0.tgz#334586f352dda4beaf354099b48c2d18e0819aec" - integrity sha512-QwPJd3ferTZ4cSPPjdP5bsYHMytwWYnAN5EEnLtGvkqp/FCCnGsBgxrm9EuIDnjUC3Uc/kETtvVi7fSIVC74Dg== + version "3.6.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" + integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== dependencies: hastscript "^6.0.0" parse-entities "^2.0.0" - prismjs "~1.25.0" + prismjs "~1.27.0" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.2.1, regenerate@^1.4.0, regenerate@^1.4.2: +regenerate@^1.2.1, regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -15103,22 +12718,22 @@ regenerate@^1.2.1, regenerate@^1.4.0, regenerate@^1.4.2: regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + integrity sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w== regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - integrity sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck= + integrity sha512-D0Y/JJ4VhusyMOd/o25a3jdUqN/bC85EFsaoL9Oqmy/O4efCh+xhp7yj2EEOsj974qvMkcW8AwUzJ1jB/MbxCw== regenerator-transform@^0.10.0: version "0.10.1" @@ -15129,17 +12744,10 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" @@ -15151,97 +12759,57 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: + "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.6.4: - version "0.6.7" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" - integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== dependencies: jsesc "~0.5.0" -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" @@ -15253,25 +12821,27 @@ rehype-stringify@^8.0.0: hast-util-to-html "^7.1.1" remark-autolink-headings@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/remark-autolink-headings/-/remark-autolink-headings-6.0.1.tgz#074470b8ec7714a0f06fa151e293152bf9723df9" - integrity sha512-LTV5G5NMjypHEr14tMNJ36yrP+xwT7mejJelZOPXKiF5WvRH9o36zXnr2QGqfms2yVASNpDaC9NBOwKlJJKuQw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/remark-autolink-headings/-/remark-autolink-headings-6.1.0.tgz#45fa1f8860e0fc6b78bcbc4b0f5d5dd696170e04" + integrity sha512-oeMSIfjaNboWPDVKahQAjF8iJ8hsz5aI8KFzAmmBdznir7zBvkgUjYE/BrpWvd02DCf/mSQ1IklznLkl3dVvZQ== dependencies: + "@types/hast" "^2.0.0" extend "^3.0.0" + unified "^9.0.0" unist-util-visit "^2.0.0" remark-extract-frontmatter@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/remark-extract-frontmatter/-/remark-extract-frontmatter-3.1.0.tgz#8ac209bf5e7377578ebfd6dc3504e9fccabea112" - integrity sha512-16TIAq0QTGs2GrbFi9azDxfcjwacf25W33h8zXAwiUbdW9lJN5KPaY6TZ7u2iSPTOSbIYBYmj9E0Q+8e+eGGPQ== + version "3.2.0" + resolved "https://registry.yarnpkg.com/remark-extract-frontmatter/-/remark-extract-frontmatter-3.2.0.tgz#bab57f599114f233702dea819431eec28e708656" + integrity sha512-PmYwNCo0cMAUV3oAGg5Hn6YSZgiSDwVdxLJmPIZ804aYuvE5mAzozo5AkO0C8ELroWrtN/f9zzb0jqFPBkMnwg== -remark-frontmatter@^1.2.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz#67ec63c89da5a84bb793ecec166e11b4eb47af10" - integrity sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag== +remark-footnotes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-3.0.0.tgz#5756b56f8464fa7ed80dbba0c966136305d8cb8d" + integrity sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg== dependencies: - fault "^1.0.1" - xtend "^4.0.1" + mdast-util-footnote "^0.1.0" + micromark-extension-footnote "^0.3.0" remark-frontmatter@^3.0.0: version "3.0.0" @@ -15290,9 +12860,9 @@ remark-gfm@^1.0.0: micromark-extension-gfm "^0.3.0" remark-hbs@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/remark-hbs/-/remark-hbs-0.4.0.tgz#3b0af809091fbee872487c7d695acf687a1a0b96" - integrity sha512-2dtEz+t8FMedZgJ7oT76ON4bCYlsnqhL9xvo1UXzv0x3P54YYb7jssEiWsAGNzn0/HXtF+/CVNR6SBJhbB7bUQ== + version "0.4.1" + resolved "https://registry.yarnpkg.com/remark-hbs/-/remark-hbs-0.4.1.tgz#07f5ce6cc85d64c673fd4ef7cd5a51189a2abe20" + integrity sha512-q1qnjA473z409IGqj3iu0Rex9YVN3cfwf6siPP+SQN9Yx66OxyL2cU4VHWK6IxWHSa/cughU2CBUbDPPsWxlfg== dependencies: unist-builder "^2.0.3" unist-util-visit "^2.0.3" @@ -15304,27 +12874,6 @@ remark-normalize-headings@^2.0.0: dependencies: mdast-normalize-headings "^2.0.0" -remark-parse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" - integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - remark-parse@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" @@ -15333,16 +12882,16 @@ remark-parse@^9.0.0: mdast-util-from-markdown "^0.8.0" remark-rehype@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-8.0.0.tgz#5a8afc8262a59d205fba21dafb27a673fb3b92fa" - integrity sha512-gVvOH02TMFqXOWoL6iXU7NXMsDJguNkNuMrzfkQeA4V6WCyHQnOKptn+IQBVVPuIH2sMJBwo8hlrmtn1MLTh9w== + version "8.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-8.1.0.tgz#610509a043484c1e697437fa5eb3fd992617c945" + integrity sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA== dependencies: - mdast-util-to-hast "^10.0.0" + mdast-util-to-hast "^10.2.0" remark-slug@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c" - integrity sha512-ln67v5BrGKHpETnm6z6adlJPhESFJwfuZZ3jrmi+lKTzeZxh2tzFzUfDD4Pm2hRGOarHLuGToO86MNMZ/hA67Q== + version "6.1.0" + resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" + integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== dependencies: github-slugger "^1.0.0" mdast-util-to-string "^1.0.0" @@ -15351,76 +12900,29 @@ remark-slug@^6.0.0: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== -repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.0.0, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== dependencies: is-finite "^1.0.0" -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" @@ -15435,22 +12937,22 @@ requireindex@^1.2.0: requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== reselect@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" - integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + integrity sha512-b/6tFZCmRhtBMa4xGqiiRp9jh9Aqi2A687Lo265cN0/QohJQEBPiQ52f4QB6i0eF3yp3hmLL21LSGBcML2dlxA== reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== + version "4.1.7" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42" + integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A== resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== dependencies: expand-tilde "^2.0.0" global-modules "^1.0.0" @@ -15499,7 +13001,7 @@ resolve-package-path@^4.0.1, resolve-package-path@^4.0.3: resolve-path@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" - integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= + integrity sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w== dependencies: http-errors "~1.6.2" path-is-absolute "1.0.1" @@ -15507,17 +13009,9 @@ resolve-path@^1.4.0: resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.22.1: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -15526,18 +13020,19 @@ resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -15553,7 +13048,7 @@ restore-cursor@^3.1.0: resumer@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== dependencies: through "~2.3.4" @@ -15567,6 +13062,11 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rimraf@^2.2.8, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -15603,15 +13103,6 @@ rollup-pluginutils@^2.8.1: dependencies: estree-walker "^0.6.1" -rollup@^1.12.0: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - rollup@^2.50.0: version "2.79.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" @@ -15637,7 +13128,7 @@ rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2, rsvp@^4.8.4, rsvp@^4.8.5: rsvp@~3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.2.1.tgz#07cb4a5df25add9e826ebc67dcc9fd89db27d84a" - integrity sha1-B8tKXfJa3Z6Cbrxn3Mn9idsn2Eo= + integrity sha512-Rf4YVNYpKjZ6ASAmibcwTNciQ5Co5Ztq6iZPEykHpkoflnD/K5ryE/rHehFsTm4NJj8nKDhbi3eKBWGogmNnkg== run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" @@ -15654,23 +13145,30 @@ run-parallel@^1.1.9: run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== dependencies: aproba "^1.1.1" -rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.6: - version "6.6.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" - integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== +rxjs@^6.4.0, rxjs@^6.6.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" +rxjs@^7.5.1: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -15678,16 +13176,25 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" - integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= + integrity sha512-o0JmTu17WGUaUOHa1l0FPGXKBfijbxK6qoHzlkihsDXxzBHvJcA7zgviKR92Xs841rX9pK16unfphLq0/KqX7A== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -15707,26 +13214,10 @@ sane@^4.0.0, sane@^4.1.0: minimist "^1.1.1" walker "~1.0.5" -sass@^1.28.0: - version "1.32.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.8.tgz#f16a9abd8dc530add8834e506878a2808c037bdc" - integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== - dependencies: - chokidar ">=2.0.0 <4.0.0" - -sass@^1.43.4: - version "1.54.6" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.6.tgz#5a12c268db26555c335028e355d6b7b1a5b9b4c8" - integrity sha512-DUqJjR2WxXBcZjRSZX5gCVyU+9fuC2qDfFzoKX9rV4rCOcec5mPtEafTcfsyL3YJuLONjWylBne+uXVh5rrmFw== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sass@^1.49.7: - version "1.54.5" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.5.tgz#93708f5560784f6ff2eab8542ade021a4a947b3a" - integrity sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw== +sass@^1.28.0, sass@^1.49.7, sass@^1.58.3: + version "1.59.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.59.2.tgz#537f6d11614d4f20f97696f23ad358ee398b1937" + integrity sha512-jJyO6SmbzkJexF8MUorHx5tAilcgabioYxT/BHbY4+OvoqmbHxsYlrjZ8Adhqcgl6Zqwie0TgMXLCAmPFxXOuw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -15779,72 +13270,53 @@ schema-utils@^4.0.0: select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== semver-regex@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" - integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== + version "3.1.4" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.4.tgz#13053c0d4aa11d070a2f2872b6b1e3ae1e1971b4" + integrity sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA== "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.8: +semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "2.0.0" mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" + ms "2.1.3" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^4.0.0: version "4.0.0" @@ -15853,27 +13325,27 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.18.0" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" @@ -15888,17 +13360,17 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" @@ -15911,7 +13383,7 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -15925,7 +13397,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -15933,16 +13405,16 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -side-channel@^1.0.3, side-channel@^1.0.4: +side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== @@ -15951,12 +13423,7 @@ side-channel@^1.0.3, side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -15988,7 +13455,7 @@ sinon@^9.0.0: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== slash@^3.0.0: version "3.0.0" @@ -16016,7 +13483,7 @@ slice-ansi@^4.0.0: slide@~1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== snake-case@^3.0.3: version "3.0.4" @@ -16056,37 +13523,39 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socket.io-adapter@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" - integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== +socket.io-adapter@~2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" + integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA== + dependencies: + ws "~8.11.0" -socket.io-parser@~4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" - integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== +socket.io-parser@~4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206" + integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" socket.io@^4.1.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.2.tgz#1eb25fd380ab3d63470aa8279f8e48d922d443ac" - integrity sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ== + version "4.6.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.6.1.tgz#62ec117e5fce0692fa50498da9347cfb52c3bc70" + integrity sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA== dependencies: accepts "~1.3.4" base64id "~2.0.0" debug "~4.3.2" - engine.io "~6.2.0" - socket.io-adapter "~2.4.0" - socket.io-parser "~4.2.0" + engine.io "~6.4.1" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.1" sort-object-keys@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== -sort-package-json@^1.48.0: +sort-package-json@^1.49.0: version "1.57.0" resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.57.0.tgz#e95fb44af8ede0bb6147e3f39258102d4bb23fc4" integrity sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q== @@ -16134,15 +13603,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@~0.5.20: +source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -16153,7 +13614,7 @@ source-map-support@~0.5.20: source-map-url@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" - integrity sha1-fsrxO1e80J2opAxdJp2zN5nUqvk= + integrity sha512-QU4fa0D6aSOmrT+7OHpUXw+jS84T0MLaQNtFs8xzLNe6Arj44Magd7WEbyVW5LNYoAPVV35aKs4azxIfVJrToQ== source-map-url@^0.4.0: version "0.4.1" @@ -16163,14 +13624,14 @@ source-map-url@^0.4.0: source-map@0.4.x, source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + integrity sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A== dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" @@ -16180,7 +13641,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: source-map@~0.1.x: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= + integrity sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ== dependencies: amdefine ">=0.0.4" @@ -16189,7 +13650,7 @@ source-map@~0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -sourcemap-codec@^1.4.4: +sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== @@ -16212,7 +13673,7 @@ space-separated-tokens@^1.0.0: spawn-args@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/spawn-args/-/spawn-args-0.2.0.tgz#fb7d0bd1d70fd4316bd9e3dec389e65f9d6361bb" - integrity sha1-+30L0dcP1DFr2ePew4nmX51jYbs= + integrity sha512-73BoniQDcRWgnLAf/suKH6V5H54gd1KLzwYN9FB6J/evqTV33htH9xwV/4BHek+++jzxpVlZQKKZkqstPQPmQg== spdx-compare@^1.0.0: version "1.0.0" @@ -16224,9 +13685,9 @@ spdx-compare@^1.0.0: spdx-ranges "^2.0.0" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -16245,9 +13706,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== spdx-ranges@^2.0.0: version "2.1.1" @@ -16270,7 +13731,7 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -sprintf-js@^1.0.3: +sprintf-js@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== @@ -16278,64 +13739,51 @@ sprintf-js@^1.0.3: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sri-toolbox@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/sri-toolbox/-/sri-toolbox-0.2.0.tgz#a7fea5c3fde55e675cf1c8c06f3ebb5c2935835e" - integrity sha1-p/6lw/3lXmdc8cjAbz67XCk1g14= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" + integrity sha512-DQIMWCAr/M7phwo+d3bEfXwSBEwuaJL+SJx9cuqt1Ty7K96ZFoHpYnSbhrQZEr0+0/GtmpKECP8X/R4RyeTAfw== ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" stagehand@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stagehand/-/stagehand-1.0.0.tgz#79515e2ad3a02c63f8720c7df9b6077ae14276d9" - integrity sha512-zrXl0QixAtSHFyN1iv04xOBgplbT4HgC8T7g+q8ESZbDNi5uZbMtxLukFVXPJ5Nl7zCYvYcrT3Mj24WYCH93hw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/stagehand/-/stagehand-1.0.1.tgz#0cbca6f906e4a7be36c5830dc31d9cc7091a827e" + integrity sha512-GqXBq2SPWv9hTXDFKS8WrKK1aISB0aKGHZzH+uD4ShAgs+Fz20ZfoerLOm8U+f62iRWLrw6nimOY/uYuTcVhvg== dependencies: debug "^4.1.0" -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" stream-browserify@^2.0.1: version "2.0.2" @@ -16377,26 +13825,18 @@ string-argv@0.3.1: string-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= + integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -16405,67 +13845,68 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" string.prototype.matchall@^4.0.5: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" + regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" - integrity sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ== + version "3.1.4" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trim@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd" - integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.20.4" string_decoder@0.10, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -16502,14 +13943,14 @@ stringify-object@^3.3.0: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -16520,14 +13961,7 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -16537,12 +13971,12 @@ strip-ansi@^6.0.1: strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= + integrity sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg== strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" @@ -16552,7 +13986,7 @@ strip-bom@^4.0.0: strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" @@ -16564,13 +13998,6 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -structured-source@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/structured-source/-/structured-source-3.0.2.tgz#dd802425e0f53dc4a6e7aca3752901a1ccda7af5" - integrity sha1-3YAkJeD1PcSm56yjdSkBoczaevU= - dependencies: - boundary "^1.0.1" - style-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" @@ -16582,19 +14009,19 @@ style-loader@^2.0.0: styled_string@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/styled_string/-/styled_string-0.0.1.tgz#d22782bd81295459bc4f1df18c4bad8e94dd124a" - integrity sha1-0ieCvYEpVFm8Tx3xjEutjpTdEko= + integrity sha512-DU2KZiB6VbPkO2tGSqQ9n96ZstUPjW7X4sGO6V2m1myIQluX0p1Ol8BrA/l6/EesqhMqXOIXs3cJNOy1UuU2BA== sum-up@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" - integrity sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4= + integrity sha512-zw5P8gnhiqokJUWRdR6F4kIIIke0+ubQSGyYUY506GCbJWtV7F6Xuy0j6S125eSX2oF+a8KdivsZ8PlVEH0Mcw== dependencies: chalk "^1.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: version "5.5.0" @@ -16660,9 +14087,9 @@ tabbable@^5.3.3: integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA== table@^6.0.9: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -16671,9 +14098,9 @@ table@^6.0.9: strip-ansi "^6.0.1" tailwindcss@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741" - integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g== + version "3.2.7" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07" + integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ== dependencies: arg "^5.0.2" chokidar "^3.5.3" @@ -16681,19 +14108,20 @@ tailwindcss@^3.1.8: detective "^5.2.1" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.2.11" + fast-glob "^3.2.12" glob-parent "^6.0.2" is-glob "^4.0.3" lilconfig "^2.0.6" + micromatch "^4.0.5" normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.14" + postcss "^8.0.9" postcss-import "^14.1.0" postcss-js "^4.0.0" postcss-load-config "^3.1.4" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.10" + postcss-nested "6.0.0" + postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" quick-lru "^5.1.1" resolve "^1.22.1" @@ -16718,26 +14146,30 @@ tapable@^2.1.1, tapable@^2.2.0: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tape@^5.0.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/tape/-/tape-5.2.2.tgz#a98475ecf30aa0ed2a89c36439bb9438d24d2184" - integrity sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA== + version "5.6.3" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.6.3.tgz#0d3cc82f96b0906f73b0981df1a38a44fec7901d" + integrity sha512-cUDDGSbyoSIpdUAqbqLI/r7i/S4BHuCB9M5j7E/LrLs/x/i4zeAJ798aqo+FGo+kr9seBZwr8AkZW6rjceyAMQ== dependencies: + array.prototype.every "^1.1.4" call-bind "^1.0.2" - deep-equal "^2.0.5" - defined "^1.0.0" + deep-equal "^2.2.0" + defined "^1.0.1" dotignore "^0.1.2" for-each "^0.3.3" - glob "^7.1.6" + get-package-type "^0.1.0" + glob "^7.2.3" has "^1.0.3" + has-dynamic-import "^2.0.1" inherits "^2.0.4" - is-regex "^1.1.2" - minimist "^1.2.5" - object-inspect "^1.9.0" + is-regex "^1.1.4" + minimist "^1.2.7" + object-inspect "^1.12.3" object-is "^1.1.5" - object.assign "^4.1.2" - resolve "^2.0.0-next.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + resolve "^2.0.0-next.4" resumer "^0.0.0" - string.prototype.trim "^1.2.4" + string.prototype.trim "^1.2.7" through "^2.3.8" temp@0.9.4: @@ -16764,29 +14196,29 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser-webpack-plugin@^5.1.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + serialize-javascript "^6.0.1" + terser "^5.16.5" terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.14.1, terser@^5.3.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== +terser@^5.16.5, terser@^5.3.0: + version "5.16.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" + integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -16803,9 +14235,9 @@ test-exclude@^6.0.0: minimatch "^3.0.4" testem@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/testem/-/testem-3.9.0.tgz#a82ccf01e5a248e3924244186e348c665ab90f7d" - integrity sha512-YTxCYKj0cc8uUSKEziJtSC5T/pw4fQnY0ZXNOyvAFgrijfsN9NxmncJZOHLhPgFOuhbRd5i+DBQxw0Cpe0SEFg== + version "3.10.1" + resolved "https://registry.yarnpkg.com/testem/-/testem-3.10.1.tgz#bab8a83bec11e975f7d1e47e924eed6135957e5b" + integrity sha512-42c4e7qlAelwMd8O3ogtVGRbgbr6fJnX6H51ACOIG1V1IjsKPlcQtxPyOwaL4iikH22Dfh+EyIuJnMG4yxieBQ== dependencies: "@xmldom/xmldom" "^0.8.0" backbone "^1.1.2" @@ -16845,7 +14277,7 @@ text-encoding@^0.7.0: text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== "textextensions@1 || 2", textextensions@^2.5.0: version "2.6.0" @@ -16871,7 +14303,7 @@ through2@^3.0.1: through@^2.3.6, through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== timers-browserify@^2.0.4: version "2.0.12" @@ -16906,16 +14338,16 @@ tiny-lr@^2.0.0: qs "^6.4.0" tippy.js@^6.2.7: - version "6.3.1" - resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.1.tgz#3788a007be7015eee0fd589a66b98fb3f8f10181" - integrity sha512-JnFncCq+rF1dTURupoJ4yPie5Cof978inW6/4S6kmWV7LL9YOSEVMifED3KdrVPEG+Z/TFH2CDNJcQEfaeuQww== + version "6.3.7" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" + integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== dependencies: - "@popperjs/core" "^2.8.3" + "@popperjs/core" "^2.9.0" tmp@0.0.28: version "0.0.28" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" - integrity sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA= + integrity sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg== dependencies: os-tmpdir "~1.0.1" @@ -16940,37 +14372,37 @@ tmp@^0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -17000,10 +14432,10 @@ to-vfile@^6.1.0: is-buffer "^2.0.0" vfile "^4.0.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== torii@^1.0.0-beta.1: version "1.0.0-beta.1" @@ -17013,27 +14445,20 @@ torii@^1.0.0-beta.1: ember-cli-babel "^7.26.10" ember-cli-htmlbars "^5.7.2" -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" punycode "^2.1.1" - universalify "^0.1.2" + universalify "^0.2.0" + url-parse "^1.5.3" -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" @@ -17043,9 +14468,9 @@ tr46@~0.0.3: integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== tracked-built-ins@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/tracked-built-ins/-/tracked-built-ins-3.1.0.tgz#827703e8e8857e45ac449dfc41e8706e0d6da309" - integrity sha512-yPEZV1aYaw7xFWdoEluvdwNxIJIA834HaBQaMATjNAYPwd1fRqIJ46YnuRo6+9mRRWu6nM6sJqrVVa5H6UhFuw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/tracked-built-ins/-/tracked-built-ins-3.1.1.tgz#c16a1418d9c3b216527b1b40a2a80e293229359f" + integrity sha512-W8qLBxZzeC2zhEDdbPKi2GTffsiFn8PRbgal/2Fl6E/84CMvnpS6cPMmkvUmSLgKbqcAxl/RhyjWnhIZ9iPQjQ== dependencies: ember-cli-babel "^7.26.10" ember-cli-typescript "^5.1.0" @@ -17059,10 +14484,10 @@ tracked-maps-and-sets@^2.1.0: "@glimmer/tracking" "^1.0.0" ember-cli-babel "^7.17.2" -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= +traverse@^0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe" + integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg== tree-sync@^1.2.2: version "1.4.0" @@ -17094,17 +14519,7 @@ treeify@^1.1.0: trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -trim-trailing-lines@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" - integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== - -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== trough@^1.0.0, trough@^1.0.5: version "1.0.5" @@ -17117,26 +14532,14 @@ tslib@^1.9.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.3, tslib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -17148,7 +14551,7 @@ type-check@^0.4.0, type-check@~0.4.0: type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" @@ -17167,7 +14570,12 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-is@~1.6.17, type-is@~1.6.18: +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -17175,6 +14583,15 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -17185,17 +14602,12 @@ typedarray-to-buffer@^3.1.5: typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript-memoize@^1.0.0-alpha.3: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.0.0.tgz#ad3b0e7e5a411ca234be123f913a2a31302b7eb6" - integrity sha512-B1eufjs/mGzHqoGeI1VT/dnSBoZr2v3i3/Wm8NmdxlZflyVdleE8wO0QwUuj4NfundD7T5nU3I7HSKp/5BD9og== - -typescript-memoize@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.0.tgz#4a8f512d06fc995167c703a3592219901db8bc79" - integrity sha512-LQPKVXK8QrBBkL/zclE6YgSWn0I8ew5m0Lf+XL00IwMhlotqRLlzHV+BRrljVQIc+NohUAuQP7mg4HQwrx5Xbg== +typescript-memoize@^1.0.0-alpha.3, typescript-memoize@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.1.tgz#02737495d5df6ebf72c07ba0d002e8f4cf5ccfa0" + integrity sha512-GQ90TcKpIH4XxYTI2F98yEQYZgjNMOGPpOgdjIBhaLaWji5HPWlRnZ4AeA1hfBxtY7bCGDJsqDDHk/KaHOl5bA== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -17203,79 +14615,43 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: - version "3.13.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.1.tgz#2749d4b8b5b7d67460b4a418023ff73c3fefa60a" - integrity sha512-EWhx3fHy3M9JbaeTnO+rEqzCe1wtyQClv6q3YWq0voOj4E+bMZBErVS1GAHPDiRGONYq34M1/d8KuQMgvi6Gjw== + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" underscore.string@^3.2.2, underscore.string@~3.3.4: - version "3.3.5" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" - integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== + version "3.3.6" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.6.tgz#ad8cf23d7423cb3b53b898476117588f4e2f9159" + integrity sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ== dependencies: - sprintf-js "^1.0.3" + sprintf-js "^1.1.1" util-deprecate "^1.0.2" -underscore@>=1.8.3: - version "1.12.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" - integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== - -underscore@~1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" - integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== +underscore@>=1.8.3, underscore@^1.13.2: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= - -unherit@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" - integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== - dependencies: - inherits "^2.0.0" - xtend "^4.0.0" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + integrity sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - unicode-match-property-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" @@ -17284,42 +14660,20 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -unified@^6.1.6: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" - integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -unified@^9.0.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.1.tgz#ae18d5674c114021bfdbdf73865ca60f410215a3" - integrity sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA== +unified@^9.0.0, unified@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== dependencies: bail "^1.0.0" extend "^3.0.0" @@ -17392,18 +14746,6 @@ unist-util-position@^3.0.0: resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== - dependencies: - unist-util-visit "^1.1.0" - -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== - unist-util-stringify-position@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" @@ -17442,11 +14784,16 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" -universalify@^0.1.0, universalify@^0.1.2: +universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -17455,12 +14802,12 @@ universalify@^2.0.0: unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -17468,7 +14815,7 @@ unset-value@^1.0.0: untildify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" - integrity sha1-F+soB5h/dpUunASF/DEdBqgmouA= + integrity sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig== dependencies: os-homedir "^1.0.0" @@ -17477,18 +14824,18 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: escalade "^3.1.1" picocolors "^1.0.0" -update-section@~0.3.3: +update-section@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/update-section/-/update-section-0.3.3.tgz#458f17820d37820dc60e20b86d94391b00123158" - integrity sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg= + integrity sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw== uri-js@^4.2.2: version "4.4.1" @@ -17500,12 +14847,20 @@ uri-js@^4.2.2: urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: punycode "1.3.2" querystring "0.2.0" @@ -17516,24 +14871,24 @@ use@^3.1.0: integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== username-sync@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/username-sync/-/username-sync-1.0.2.tgz#0a3697909fb7b5768d29e2921f573acfdd427592" - integrity sha512-ayNkOJdoNSGNDBE46Nkc+l6IXmeugbzahZLSMkwvgRWv5y5ZqNY2IrzcgmkR4z32sj1W3tM3TuTUMqkqBzO+RA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/username-sync/-/username-sync-1.0.3.tgz#ae41c5c8a4c8c2ecc1443a7d0742742bd7e36732" + integrity sha512-m/7/FSqjJNAzF2La448c/aEom0gJy7HY7Y509h6l0ePvEkFictAGptwWaj1msWJ38JbfEDOUoE8kqFee9EHKdA== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util-extend@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= + integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA== util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== dependencies: inherits "2.0.1" @@ -17547,12 +14902,7 @@ util@^0.11.0: utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^8.3.2: version "8.3.2" @@ -17575,7 +14925,7 @@ validate-npm-package-license@^3.0.1: validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: builtins "^1.0.3" @@ -17595,28 +14945,7 @@ validated-changeset@1.0.0, validated-changeset@~1.0.0: vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vfile-message@^2.0.0: version "2.0.4" @@ -17626,16 +14955,6 @@ vfile-message@^2.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - vfile@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" @@ -17668,7 +14987,7 @@ w3c-xmlserializer@^2.0.0: walk-sync@^0.2.5: version "0.2.7" resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.2.7.tgz#b49be4ee6867657aeb736978b56a29d10fa39969" - integrity sha1-tJvk7mhnZXrrc2l4tWop0Q+jmWk= + integrity sha512-OH8GdRMowEFr0XSHQeX5fGweO6zSVHo7bG/0yJQx6LAj9Oukz0C8heI3/FYectT66gY0IPGe89kOvU410/UNpg== dependencies: ensure-posix-path "^1.0.0" matcher-collection "^1.0.0" @@ -17711,19 +15030,18 @@ walk-sync@^3.0.0: minimatch "^3.0.4" walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - makeerror "1.0.x" + makeerror "1.0.12" watch-detector@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/watch-detector/-/watch-detector-1.0.0.tgz#c7b722d8695fee9ab6071e0f38f258e6adb22609" - integrity sha512-siywMl3fXK30Tlpu/dUBHhlpxhQmHdguZ8OIb813eU9lrVmmsJa9k0+n1HtJ+7p3SzFCPq2XbmR3GUYpPC3TBA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/watch-detector/-/watch-detector-1.0.2.tgz#95deb9189f8c89c0a9f211739cef6d01cffcf452" + integrity sha512-MrJK9z7kD5Gl3jHBnnBVHvr1saVGAfmkyyrvuNzV/oe0Gr1nwZTy5VSA0Gw2j2Or0Mu8HcjUa44qlBvC2Ofnpg== dependencies: heimdalljs-logger "^0.1.10" - semver "^6.3.0" silent-error "^1.1.1" tmp "^0.1.0" @@ -17763,7 +15081,7 @@ wayfarer@^7.0.1: wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" @@ -17825,9 +15143,9 @@ webpack@^4.43.0: webpack-sources "^1.4.1" webpack@^5.74.0: - version "5.74.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" - integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== + version "5.76.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.1.tgz#7773de017e988bccb0f13c7d75ec245f377d295c" + integrity sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -17888,16 +15206,16 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" webidl-conversions "^6.1.0" -which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: +which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -17919,22 +15237,21 @@ which-collection@^1.0.1: is-weakset "^2.0.1" which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + version "1.1.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.1.0.tgz#35ccf7b1a0fce87bd8b92a478c9d045785d3bf35" + integrity sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA== -which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" which@^1.2.14, which@^1.2.9: version "1.3.1" @@ -17950,14 +15267,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -wide-align@^1.1.5: +wide-align@^1.1.0, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -17972,12 +15282,12 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: wordwrap@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + integrity sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw== wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== worker-farm@^1.7.0: version "1.7.0" @@ -17987,9 +15297,9 @@ worker-farm@^1.7.0: errno "~0.1.7" workerpool@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-2.3.3.tgz#49a70089bd55e890d68cc836a19419451d7c81d7" - integrity sha512-L1ovlYHp6UObYqElXXpbd214GgbEKDED0d3sj7pRdFXjNkb2+un/AUcCkceHizO0IVI6SOGGncrcjozruCkRgA== + version "2.3.4" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-2.3.4.tgz#661335ded59a08c01ca009e30cc96929a7b4b0aa" + integrity sha512-c2EWrgB9IKHi1jbf4LG9sxKgHYOY+Ej5li6siEGtFecCXWG7eQOqATPEJ0rg1KFETXROEkErc1t5XiNrLG666Q== dependencies: object-assign "4.1.1" @@ -18002,15 +15312,10 @@ workerpool@^3.1.1: object-assign "4.1.1" rsvp "^4.8.4" -workerpool@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== - -workerpool@^6.0.3: - version "6.1.2" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.2.tgz#52bb8c05d89e9b699b68d39f9687419cb2f6ca5c" - integrity sha512-I/gDW4LwV3bslk4Yiqd4XoNYlnvV03LON7KuIjmQ90yDnKND1sR2LK/JA1g1tmd71oe6KPSvN0JpBzXIH6xAgA== +workerpool@^6.0.0, workerpool@^6.1.4: + version "6.4.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.4.0.tgz#f8d5cfb45fde32fa3b7af72ad617c3369567a462" + integrity sha512-i3KR1mQMNwY2wx20ozq2EjISGtQWDIfV56We+yGJ5yDs8jTwQiLLaqHlkBHITlCuJnYlVRmXegxFxZg7gqI++A== wrap-ansi@^6.2.0: version "6.2.0" @@ -18043,7 +15348,7 @@ wrap-legacy-hbs-plugin-if-needed@^1.0.1: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: version "3.0.3" @@ -18055,20 +15360,15 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.4: - version "7.4.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" - integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== - -ws@~8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== xdg-basedir@^4.0.0: version "4.0.0" @@ -18090,25 +15390,25 @@ xmlhttprequest-ssl@^1.6.3: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6" integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q== -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yadda@*: - version "2.1.0" - resolved "https://registry.yarnpkg.com/yadda/-/yadda-2.1.0.tgz#44b2279f552d0df49e5af663457ee65a796df7ef" - integrity sha512-jWEhhPemaU2OBNjOmwtdbNm7dHS43bNFexsV4aEDhlkz/vuGvYYHsySdSCM0YWdGLzlyqEJqLkXva+vFRTOblg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/yadda/-/yadda-2.2.0.tgz#748a2ae921a968aa5f914324898ccecb1fa5ee32" + integrity sha512-TO5YH2XzFZjtInULMZHKTStTOaxRG5hB/nN8qxHOJedsd0HLeqRoP/TW1qKqTeGhIUzq7CVR7iIEFIwerbXIkg== yallist@^3.0.0, yallist@^3.0.2: version "3.1.1" @@ -18134,9 +15434,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.9.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs@^16.2.0: version "16.2.0" From 1f4c590f2ca70e2c9d559e6cb84b8ffcb37b710b Mon Sep 17 00:00:00 2001 From: Luke Kysow <1034429+lkysow@users.noreply.github.com> Date: Tue, 21 Mar 2023 09:15:53 -0700 Subject: [PATCH 29/30] Regen helm docs (#16701) --- website/content/docs/k8s/helm.mdx | 60 +++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/website/content/docs/k8s/helm.mdx b/website/content/docs/k8s/helm.mdx index 602efba9e6de..ea45c2c1f525 100644 --- a/website/content/docs/k8s/helm.mdx +++ b/website/content/docs/k8s/helm.mdx @@ -373,14 +373,20 @@ Use these links to navigate to a particular top-level stanza. for all Consul and consul-k8s-control-plane components. This requires Consul >= 1.4. - - `bootstrapToken` ((#v-global-acls-bootstraptoken)) - A Kubernetes or Vault secret containing the bootstrap token to use for - creating policies and tokens for all Consul and consul-k8s-control-plane components. - If set, we will skip ACL bootstrapping of the servers and will only - initialize ACLs for the Consul clients and consul-k8s-control-plane system components. + - `bootstrapToken` ((#v-global-acls-bootstraptoken)) - A Kubernetes or Vault secret containing the bootstrap token to use for creating policies and + tokens for all Consul and consul-k8s-control-plane components. If `secretName` and `secretKey` + are unset, a default secret name and secret key are used. If the secret is populated, then + we will skip ACL bootstrapping of the servers and will only initialize ACLs for the Consul + clients and consul-k8s-control-plane system components. + If the secret is empty, then we will bootstrap ACLs on the Consul servers, and write the + bootstrap token to this secret. If ACLs are already bootstrapped on the servers, then the + secret must contain the bootstrap token. - `secretName` ((#v-global-acls-bootstraptoken-secretname)) (`string: null`) - The name of the Kubernetes or Vault secret that holds the bootstrap token. + If unset, this defaults to `{{ global.name }}-bootstrap-acl-token`. - `secretKey` ((#v-global-acls-bootstraptoken-secretkey)) (`string: null`) - The key within the Kubernetes or Vault secret that holds the bootstrap token. + If unset, this defaults to `token`. - `createReplicationToken` ((#v-global-acls-createreplicationtoken)) (`boolean: false`) - If true, an ACL token will be created that can be used in secondary datacenters for replication. This should only be set to true in the @@ -1718,7 +1724,19 @@ Use these links to navigate to a particular top-level stanza. "sample/annotation2": "bar" ``` - - `resources` ((#v-connectinject-resources)) (`map`) - The resource settings for connect inject pods. + - `resources` ((#v-connectinject-resources)) (`map`) - The resource settings for connect inject pods. The defaults, are optimized for getting started worklows on developer deployments. The settings should be tweaked for production deployments. + + - `requests` ((#v-connectinject-resources-requests)) + + - `memory` ((#v-connectinject-resources-requests-memory)) (`string: 50Mi`) - Recommended production default: 500Mi + + - `cpu` ((#v-connectinject-resources-requests-cpu)) (`string: 50m`) - Recommended production default: 250m + + - `limits` ((#v-connectinject-resources-limits)) + + - `memory` ((#v-connectinject-resources-limits-memory)) (`string: 50Mi`) - Recommended production default: 500Mi + + - `cpu` ((#v-connectinject-resources-limits-cpu)) (`string: 50m`) - Recommended production default: 250m - `failurePolicy` ((#v-connectinject-failurepolicy)) (`string: Fail`) - Sets the failurePolicy for the mutating webhook. By default this will cause pods not part of the consul installation to fail scheduling while the webhook is offline. This prevents a pod from skipping mutation if the webhook were to be momentarily offline. @@ -1859,17 +1877,33 @@ Use these links to navigate to a particular top-level stanza. - `requests` ((#v-connectinject-sidecarproxy-resources-requests)) - - `memory` ((#v-connectinject-sidecarproxy-resources-requests-memory)) (`string: null`) - Recommended default: 100Mi + - `memory` ((#v-connectinject-sidecarproxy-resources-requests-memory)) (`string: null`) - Recommended production default: 100Mi - - `cpu` ((#v-connectinject-sidecarproxy-resources-requests-cpu)) (`string: null`) - Recommended default: 100m + - `cpu` ((#v-connectinject-sidecarproxy-resources-requests-cpu)) (`string: null`) - Recommended production default: 100m - `limits` ((#v-connectinject-sidecarproxy-resources-limits)) - - `memory` ((#v-connectinject-sidecarproxy-resources-limits-memory)) (`string: null`) - Recommended default: 100Mi + - `memory` ((#v-connectinject-sidecarproxy-resources-limits-memory)) (`string: null`) - Recommended production default: 100Mi + + - `cpu` ((#v-connectinject-sidecarproxy-resources-limits-cpu)) (`string: null`) - Recommended production default: 100m + + - `initContainer` ((#v-connectinject-initcontainer)) (`map`) - The resource settings for the Connect injected init container. If null, the resources + won't be set for the initContainer. The defaults are optimized for developer instances of + Kubernetes, however they should be tweaked with the recommended defaults as shown below to speed up service registration times. + + - `resources` ((#v-connectinject-initcontainer-resources)) + + - `requests` ((#v-connectinject-initcontainer-resources-requests)) + + - `memory` ((#v-connectinject-initcontainer-resources-requests-memory)) (`string: 25Mi`) - Recommended production default: 150Mi + + - `cpu` ((#v-connectinject-initcontainer-resources-requests-cpu)) (`string: 50m`) - Recommended production default: 250m + + - `limits` ((#v-connectinject-initcontainer-resources-limits)) - - `cpu` ((#v-connectinject-sidecarproxy-resources-limits-cpu)) (`string: null`) - Recommended default: 100m + - `memory` ((#v-connectinject-initcontainer-resources-limits-memory)) (`string: 150Mi`) - Recommended production default: 150Mi - - `initContainer` ((#v-connectinject-initcontainer)) (`map`) - The resource settings for the Connect injected init container. + - `cpu` ((#v-connectinject-initcontainer-resources-limits-cpu)) (`string: null`) - Recommended production default: 500m ### meshGateway ((#h-meshgateway)) @@ -2041,8 +2075,7 @@ Use these links to navigate to a particular top-level stanza. for a specific gateway. Requirements: consul >= 1.8.0 - - `enabled` ((#v-ingressgateways-enabled)) (`boolean: false`) - Enable ingress gateway deployment. Requires `connectInject.enabled=true` - and `client.enabled=true`. + - `enabled` ((#v-ingressgateways-enabled)) (`boolean: false`) - Enable ingress gateway deployment. Requires `connectInject.enabled=true`. - `defaults` ((#v-ingressgateways-defaults)) - Defaults sets default values for all gateway fields. With the exception of annotations, defining any of these values in the `gateways` list @@ -2171,8 +2204,7 @@ Use these links to navigate to a particular top-level stanza. for a specific gateway. Requirements: consul >= 1.8.0 - - `enabled` ((#v-terminatinggateways-enabled)) (`boolean: false`) - Enable terminating gateway deployment. Requires `connectInject.enabled=true` - and `client.enabled=true`. + - `enabled` ((#v-terminatinggateways-enabled)) (`boolean: false`) - Enable terminating gateway deployment. Requires `connectInject.enabled=true`. - `defaults` ((#v-terminatinggateways-defaults)) - Defaults sets default values for all gateway fields. With the exception of annotations, defining any of these values in the `gateways` list From 8dd1d738749153f2856e2331a815fd91666e933a Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 21 Mar 2023 12:23:23 -0400 Subject: [PATCH 30/30] Remove unused are hosts set check (#16691) * Remove unused are hosts set check * Remove all traces of unused 'AreHostsSet' parameter * Remove unused Hosts attribute * Remove commented out use of snap.APIGateway.Hosts --- agent/proxycfg/api_gateway.go | 2 -- agent/proxycfg/proxycfg.deepcopy.go | 4 ---- agent/proxycfg/snapshot.go | 17 +++++++---------- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/agent/proxycfg/api_gateway.go b/agent/proxycfg/api_gateway.go index e092f6328f4b..fc2519acdce6 100644 --- a/agent/proxycfg/api_gateway.go +++ b/agent/proxycfg/api_gateway.go @@ -392,8 +392,6 @@ func (h *handlerAPIGateway) handleRouteConfigUpdate(ctx context.Context, u Updat snap.APIGateway.Upstreams.set(ref, listener, set) } snap.APIGateway.UpstreamsSet.set(ref, seenUpstreamIDs) - // snap.APIGateway.Hosts = TODO - snap.APIGateway.AreHostsSet = true // Stop watching any upstreams and discovery chains that have become irrelevant for upstreamID, cancelDiscoChain := range snap.APIGateway.WatchedDiscoveryChains { diff --git a/agent/proxycfg/proxycfg.deepcopy.go b/agent/proxycfg/proxycfg.deepcopy.go index 2694c31eda5a..a2cbc909e7f3 100644 --- a/agent/proxycfg/proxycfg.deepcopy.go +++ b/agent/proxycfg/proxycfg.deepcopy.go @@ -255,10 +255,6 @@ func (o *configSnapshotAPIGateway) DeepCopy() *configSnapshotAPIGateway { if o.BoundGatewayConfig != nil { cp.BoundGatewayConfig = o.BoundGatewayConfig.DeepCopy() } - if o.Hosts != nil { - cp.Hosts = make([]string, len(o.Hosts)) - copy(cp.Hosts, o.Hosts) - } if o.Upstreams != nil { cp.Upstreams = make(map[structs.ResourceReference]listenerUpstreamMap, len(o.Upstreams)) for k2, v2 := range o.Upstreams { diff --git a/agent/proxycfg/snapshot.go b/agent/proxycfg/snapshot.go index 68b85f975479..c5ddd0b5c153 100644 --- a/agent/proxycfg/snapshot.go +++ b/agent/proxycfg/snapshot.go @@ -666,8 +666,10 @@ func (r routeUpstreamSet) delete(route structs.ResourceReference) { delete(r, route) } -type listenerUpstreamMap map[APIGatewayListenerKey]structs.Upstreams -type listenerRouteUpstreams map[structs.ResourceReference]listenerUpstreamMap +type ( + listenerUpstreamMap map[APIGatewayListenerKey]structs.Upstreams + listenerRouteUpstreams map[structs.ResourceReference]listenerUpstreamMap +) func (l listenerRouteUpstreams) set(route structs.ResourceReference, listener APIGatewayListenerKey, upstreams structs.Upstreams) { if _, ok := l[route]; !ok { @@ -705,13 +707,9 @@ type configSnapshotAPIGateway struct { BoundGatewayConfigLoaded bool BoundGatewayConfig *structs.BoundAPIGatewayConfigEntry - // Hosts is the list of extra host entries to add to our leaf cert's DNS SANs - Hosts []string - AreHostsSet bool - // LeafCertWatchCancel is a CancelFunc to use when refreshing this gateway's // leaf cert watch with different parameters. - //LeafCertWatchCancel context.CancelFunc + // LeafCertWatchCancel context.CancelFunc // Upstreams is a list of upstreams this ingress gateway should serve traffic // to. This is constructed from the ingress-gateway config entry, and uses @@ -1079,7 +1077,6 @@ func (s *ConfigSnapshot) Valid() bool { s.APIGateway.Leaf != nil && s.APIGateway.GatewayConfigLoaded && s.APIGateway.BoundGatewayConfigLoaded && - s.APIGateway.AreHostsSet && s.APIGateway.MeshConfigSet default: return false @@ -1121,8 +1118,8 @@ func (s *ConfigSnapshot) Clone() *ConfigSnapshot { snap.APIGateway.WatchedDiscoveryChains = nil // only api-gateway - //snap.APIGateway.LeafCertWatchCancel = nil - //snap.APIGateway. + // snap.APIGateway.LeafCertWatchCancel = nil + // snap.APIGateway. } return snap

1 Intention ACL rules are specified as part of a{' '} service rule. See{' '} - + Intention Management Permissions {' '} for more details. @@ -154,7 +154,7 @@ The table below shows this endpoint's support for